1 #include "m68kcpu.h"
2 
3 /* ======================================================================== */
4 /* ========================= INSTRUCTION HANDLERS ========================= */
5 /* ======================================================================== */
6 
7 
m68k_op_nbcd_8_d(void)8 void m68k_op_nbcd_8_d(void)
9 {
10 	uint* r_dst = &DY;
11 	uint dst = *r_dst;
12 	uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
13 
14 	if(res != 0x9a)
15 	{
16 		FLAG_V = ~res; /* Undefined V behavior */
17 
18 		if((res & 0x0f) == 0xa)
19 			res = (res & 0xf0) + 0x10;
20 
21 		res = MASK_OUT_ABOVE_8(res);
22 
23 		FLAG_V &= res; /* Undefined V behavior part II */
24 
25 		*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
26 
27 		FLAG_Z |= res;
28 		FLAG_C = CFLAG_SET;
29 		FLAG_X = XFLAG_SET;
30 	}
31 	else
32 	{
33 		FLAG_V = VFLAG_CLEAR;
34 		FLAG_C = CFLAG_CLEAR;
35 		FLAG_X = XFLAG_CLEAR;
36 	}
37 	FLAG_N = NFLAG_8(res);	/* Undefined N behavior */
38 }
39 
40 
m68k_op_nbcd_8_ai(void)41 void m68k_op_nbcd_8_ai(void)
42 {
43 	uint ea = EA_AY_AI_8();
44 	uint dst = m68ki_read_8(ea);
45 	uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
46 
47 	if(res != 0x9a)
48 	{
49 		FLAG_V = ~res; /* Undefined V behavior */
50 
51 		if((res & 0x0f) == 0xa)
52 			res = (res & 0xf0) + 0x10;
53 
54 		res = MASK_OUT_ABOVE_8(res);
55 
56 		FLAG_V &= res; /* Undefined V behavior part II */
57 
58 		m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
59 
60 		FLAG_Z |= res;
61 		FLAG_C = CFLAG_SET;
62 		FLAG_X = XFLAG_SET;
63 	}
64 	else
65 	{
66 		FLAG_V = VFLAG_CLEAR;
67 		FLAG_C = CFLAG_CLEAR;
68 		FLAG_X = XFLAG_CLEAR;
69 	}
70 	FLAG_N = NFLAG_8(res);	/* Undefined N behavior */
71 }
72 
73 
m68k_op_nbcd_8_pi(void)74 void m68k_op_nbcd_8_pi(void)
75 {
76 	uint ea = EA_AY_PI_8();
77 	uint dst = m68ki_read_8(ea);
78 	uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
79 
80 	if(res != 0x9a)
81 	{
82 		FLAG_V = ~res; /* Undefined V behavior */
83 
84 		if((res & 0x0f) == 0xa)
85 			res = (res & 0xf0) + 0x10;
86 
87 		res = MASK_OUT_ABOVE_8(res);
88 
89 		FLAG_V &= res; /* Undefined V behavior part II */
90 
91 		m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
92 
93 		FLAG_Z |= res;
94 		FLAG_C = CFLAG_SET;
95 		FLAG_X = XFLAG_SET;
96 	}
97 	else
98 	{
99 		FLAG_V = VFLAG_CLEAR;
100 		FLAG_C = CFLAG_CLEAR;
101 		FLAG_X = XFLAG_CLEAR;
102 	}
103 	FLAG_N = NFLAG_8(res);	/* Undefined N behavior */
104 }
105 
106 
m68k_op_nbcd_8_pi7(void)107 void m68k_op_nbcd_8_pi7(void)
108 {
109 	uint ea = EA_A7_PI_8();
110 	uint dst = m68ki_read_8(ea);
111 	uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
112 
113 	if(res != 0x9a)
114 	{
115 		FLAG_V = ~res; /* Undefined V behavior */
116 
117 		if((res & 0x0f) == 0xa)
118 			res = (res & 0xf0) + 0x10;
119 
120 		res = MASK_OUT_ABOVE_8(res);
121 
122 		FLAG_V &= res; /* Undefined V behavior part II */
123 
124 		m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
125 
126 		FLAG_Z |= res;
127 		FLAG_C = CFLAG_SET;
128 		FLAG_X = XFLAG_SET;
129 	}
130 	else
131 	{
132 		FLAG_V = VFLAG_CLEAR;
133 		FLAG_C = CFLAG_CLEAR;
134 		FLAG_X = XFLAG_CLEAR;
135 	}
136 	FLAG_N = NFLAG_8(res);	/* Undefined N behavior */
137 }
138 
139 
m68k_op_nbcd_8_pd(void)140 void m68k_op_nbcd_8_pd(void)
141 {
142 	uint ea = EA_AY_PD_8();
143 	uint dst = m68ki_read_8(ea);
144 	uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
145 
146 	if(res != 0x9a)
147 	{
148 		FLAG_V = ~res; /* Undefined V behavior */
149 
150 		if((res & 0x0f) == 0xa)
151 			res = (res & 0xf0) + 0x10;
152 
153 		res = MASK_OUT_ABOVE_8(res);
154 
155 		FLAG_V &= res; /* Undefined V behavior part II */
156 
157 		m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
158 
159 		FLAG_Z |= res;
160 		FLAG_C = CFLAG_SET;
161 		FLAG_X = XFLAG_SET;
162 	}
163 	else
164 	{
165 		FLAG_V = VFLAG_CLEAR;
166 		FLAG_C = CFLAG_CLEAR;
167 		FLAG_X = XFLAG_CLEAR;
168 	}
169 	FLAG_N = NFLAG_8(res);	/* Undefined N behavior */
170 }
171 
172 
m68k_op_nbcd_8_pd7(void)173 void m68k_op_nbcd_8_pd7(void)
174 {
175 	uint ea = EA_A7_PD_8();
176 	uint dst = m68ki_read_8(ea);
177 	uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
178 
179 	if(res != 0x9a)
180 	{
181 		FLAG_V = ~res; /* Undefined V behavior */
182 
183 		if((res & 0x0f) == 0xa)
184 			res = (res & 0xf0) + 0x10;
185 
186 		res = MASK_OUT_ABOVE_8(res);
187 
188 		FLAG_V &= res; /* Undefined V behavior part II */
189 
190 		m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
191 
192 		FLAG_Z |= res;
193 		FLAG_C = CFLAG_SET;
194 		FLAG_X = XFLAG_SET;
195 	}
196 	else
197 	{
198 		FLAG_V = VFLAG_CLEAR;
199 		FLAG_C = CFLAG_CLEAR;
200 		FLAG_X = XFLAG_CLEAR;
201 	}
202 	FLAG_N = NFLAG_8(res);	/* Undefined N behavior */
203 }
204 
205 
m68k_op_nbcd_8_di(void)206 void m68k_op_nbcd_8_di(void)
207 {
208 	uint ea = EA_AY_DI_8();
209 	uint dst = m68ki_read_8(ea);
210 	uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
211 
212 	if(res != 0x9a)
213 	{
214 		FLAG_V = ~res; /* Undefined V behavior */
215 
216 		if((res & 0x0f) == 0xa)
217 			res = (res & 0xf0) + 0x10;
218 
219 		res = MASK_OUT_ABOVE_8(res);
220 
221 		FLAG_V &= res; /* Undefined V behavior part II */
222 
223 		m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
224 
225 		FLAG_Z |= res;
226 		FLAG_C = CFLAG_SET;
227 		FLAG_X = XFLAG_SET;
228 	}
229 	else
230 	{
231 		FLAG_V = VFLAG_CLEAR;
232 		FLAG_C = CFLAG_CLEAR;
233 		FLAG_X = XFLAG_CLEAR;
234 	}
235 	FLAG_N = NFLAG_8(res);	/* Undefined N behavior */
236 }
237 
238 
m68k_op_nbcd_8_ix(void)239 void m68k_op_nbcd_8_ix(void)
240 {
241 	uint ea = EA_AY_IX_8();
242 	uint dst = m68ki_read_8(ea);
243 	uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
244 
245 	if(res != 0x9a)
246 	{
247 		FLAG_V = ~res; /* Undefined V behavior */
248 
249 		if((res & 0x0f) == 0xa)
250 			res = (res & 0xf0) + 0x10;
251 
252 		res = MASK_OUT_ABOVE_8(res);
253 
254 		FLAG_V &= res; /* Undefined V behavior part II */
255 
256 		m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
257 
258 		FLAG_Z |= res;
259 		FLAG_C = CFLAG_SET;
260 		FLAG_X = XFLAG_SET;
261 	}
262 	else
263 	{
264 		FLAG_V = VFLAG_CLEAR;
265 		FLAG_C = CFLAG_CLEAR;
266 		FLAG_X = XFLAG_CLEAR;
267 	}
268 	FLAG_N = NFLAG_8(res);	/* Undefined N behavior */
269 }
270 
271 
m68k_op_nbcd_8_aw(void)272 void m68k_op_nbcd_8_aw(void)
273 {
274 	uint ea = EA_AW_8();
275 	uint dst = m68ki_read_8(ea);
276 	uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
277 
278 	if(res != 0x9a)
279 	{
280 		FLAG_V = ~res; /* Undefined V behavior */
281 
282 		if((res & 0x0f) == 0xa)
283 			res = (res & 0xf0) + 0x10;
284 
285 		res = MASK_OUT_ABOVE_8(res);
286 
287 		FLAG_V &= res; /* Undefined V behavior part II */
288 
289 		m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
290 
291 		FLAG_Z |= res;
292 		FLAG_C = CFLAG_SET;
293 		FLAG_X = XFLAG_SET;
294 	}
295 	else
296 	{
297 		FLAG_V = VFLAG_CLEAR;
298 		FLAG_C = CFLAG_CLEAR;
299 		FLAG_X = XFLAG_CLEAR;
300 	}
301 	FLAG_N = NFLAG_8(res);	/* Undefined N behavior */
302 }
303 
304 
m68k_op_nbcd_8_al(void)305 void m68k_op_nbcd_8_al(void)
306 {
307 	uint ea = EA_AL_8();
308 	uint dst = m68ki_read_8(ea);
309 	uint res = MASK_OUT_ABOVE_8(0x9a - dst - XFLAG_AS_1());
310 
311 	if(res != 0x9a)
312 	{
313 		FLAG_V = ~res; /* Undefined V behavior */
314 
315 		if((res & 0x0f) == 0xa)
316 			res = (res & 0xf0) + 0x10;
317 
318 		res = MASK_OUT_ABOVE_8(res);
319 
320 		FLAG_V &= res; /* Undefined V behavior part II */
321 
322 		m68ki_write_8(ea, MASK_OUT_ABOVE_8(res));
323 
324 		FLAG_Z |= res;
325 		FLAG_C = CFLAG_SET;
326 		FLAG_X = XFLAG_SET;
327 	}
328 	else
329 	{
330 		FLAG_V = VFLAG_CLEAR;
331 		FLAG_C = CFLAG_CLEAR;
332 		FLAG_X = XFLAG_CLEAR;
333 	}
334 	FLAG_N = NFLAG_8(res);	/* Undefined N behavior */
335 }
336 
337 
m68k_op_neg_8_d(void)338 void m68k_op_neg_8_d(void)
339 {
340 	uint* r_dst = &DY;
341 	uint res = 0 - MASK_OUT_ABOVE_8(*r_dst);
342 
343 	FLAG_N = NFLAG_8(res);
344 	FLAG_C = FLAG_X = CFLAG_8(res);
345 	FLAG_V = *r_dst & res;
346 	FLAG_Z = MASK_OUT_ABOVE_8(res);
347 
348 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
349 }
350 
351 
m68k_op_neg_8_ai(void)352 void m68k_op_neg_8_ai(void)
353 {
354 	uint ea = EA_AY_AI_8();
355 	uint src = m68ki_read_8(ea);
356 	uint res = 0 - src;
357 
358 	FLAG_N = NFLAG_8(res);
359 	FLAG_C = FLAG_X = CFLAG_8(res);
360 	FLAG_V = src & res;
361 	FLAG_Z = MASK_OUT_ABOVE_8(res);
362 
363 	m68ki_write_8(ea, FLAG_Z);
364 }
365 
366 
m68k_op_neg_8_pi(void)367 void m68k_op_neg_8_pi(void)
368 {
369 	uint ea = EA_AY_PI_8();
370 	uint src = m68ki_read_8(ea);
371 	uint res = 0 - src;
372 
373 	FLAG_N = NFLAG_8(res);
374 	FLAG_C = FLAG_X = CFLAG_8(res);
375 	FLAG_V = src & res;
376 	FLAG_Z = MASK_OUT_ABOVE_8(res);
377 
378 	m68ki_write_8(ea, FLAG_Z);
379 }
380 
381 
m68k_op_neg_8_pi7(void)382 void m68k_op_neg_8_pi7(void)
383 {
384 	uint ea = EA_A7_PI_8();
385 	uint src = m68ki_read_8(ea);
386 	uint res = 0 - src;
387 
388 	FLAG_N = NFLAG_8(res);
389 	FLAG_C = FLAG_X = CFLAG_8(res);
390 	FLAG_V = src & res;
391 	FLAG_Z = MASK_OUT_ABOVE_8(res);
392 
393 	m68ki_write_8(ea, FLAG_Z);
394 }
395 
396 
m68k_op_neg_8_pd(void)397 void m68k_op_neg_8_pd(void)
398 {
399 	uint ea = EA_AY_PD_8();
400 	uint src = m68ki_read_8(ea);
401 	uint res = 0 - src;
402 
403 	FLAG_N = NFLAG_8(res);
404 	FLAG_C = FLAG_X = CFLAG_8(res);
405 	FLAG_V = src & res;
406 	FLAG_Z = MASK_OUT_ABOVE_8(res);
407 
408 	m68ki_write_8(ea, FLAG_Z);
409 }
410 
411 
m68k_op_neg_8_pd7(void)412 void m68k_op_neg_8_pd7(void)
413 {
414 	uint ea = EA_A7_PD_8();
415 	uint src = m68ki_read_8(ea);
416 	uint res = 0 - src;
417 
418 	FLAG_N = NFLAG_8(res);
419 	FLAG_C = FLAG_X = CFLAG_8(res);
420 	FLAG_V = src & res;
421 	FLAG_Z = MASK_OUT_ABOVE_8(res);
422 
423 	m68ki_write_8(ea, FLAG_Z);
424 }
425 
426 
m68k_op_neg_8_di(void)427 void m68k_op_neg_8_di(void)
428 {
429 	uint ea = EA_AY_DI_8();
430 	uint src = m68ki_read_8(ea);
431 	uint res = 0 - src;
432 
433 	FLAG_N = NFLAG_8(res);
434 	FLAG_C = FLAG_X = CFLAG_8(res);
435 	FLAG_V = src & res;
436 	FLAG_Z = MASK_OUT_ABOVE_8(res);
437 
438 	m68ki_write_8(ea, FLAG_Z);
439 }
440 
441 
m68k_op_neg_8_ix(void)442 void m68k_op_neg_8_ix(void)
443 {
444 	uint ea = EA_AY_IX_8();
445 	uint src = m68ki_read_8(ea);
446 	uint res = 0 - src;
447 
448 	FLAG_N = NFLAG_8(res);
449 	FLAG_C = FLAG_X = CFLAG_8(res);
450 	FLAG_V = src & res;
451 	FLAG_Z = MASK_OUT_ABOVE_8(res);
452 
453 	m68ki_write_8(ea, FLAG_Z);
454 }
455 
456 
m68k_op_neg_8_aw(void)457 void m68k_op_neg_8_aw(void)
458 {
459 	uint ea = EA_AW_8();
460 	uint src = m68ki_read_8(ea);
461 	uint res = 0 - src;
462 
463 	FLAG_N = NFLAG_8(res);
464 	FLAG_C = FLAG_X = CFLAG_8(res);
465 	FLAG_V = src & res;
466 	FLAG_Z = MASK_OUT_ABOVE_8(res);
467 
468 	m68ki_write_8(ea, FLAG_Z);
469 }
470 
471 
m68k_op_neg_8_al(void)472 void m68k_op_neg_8_al(void)
473 {
474 	uint ea = EA_AL_8();
475 	uint src = m68ki_read_8(ea);
476 	uint res = 0 - src;
477 
478 	FLAG_N = NFLAG_8(res);
479 	FLAG_C = FLAG_X = CFLAG_8(res);
480 	FLAG_V = src & res;
481 	FLAG_Z = MASK_OUT_ABOVE_8(res);
482 
483 	m68ki_write_8(ea, FLAG_Z);
484 }
485 
486 
m68k_op_neg_16_d(void)487 void m68k_op_neg_16_d(void)
488 {
489 	uint* r_dst = &DY;
490 	uint res = 0 - MASK_OUT_ABOVE_16(*r_dst);
491 
492 	FLAG_N = NFLAG_16(res);
493 	FLAG_C = FLAG_X = CFLAG_16(res);
494 	FLAG_V = (*r_dst & res)>>8;
495 	FLAG_Z = MASK_OUT_ABOVE_16(res);
496 
497 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
498 }
499 
500 
m68k_op_neg_16_ai(void)501 void m68k_op_neg_16_ai(void)
502 {
503 	uint ea = EA_AY_AI_16();
504 	uint src = m68ki_read_16(ea);
505 	uint res = 0 - src;
506 
507 	FLAG_N = NFLAG_16(res);
508 	FLAG_C = FLAG_X = CFLAG_16(res);
509 	FLAG_V = (src & res)>>8;
510 	FLAG_Z = MASK_OUT_ABOVE_16(res);
511 
512 	m68ki_write_16(ea, FLAG_Z);
513 }
514 
515 
m68k_op_neg_16_pi(void)516 void m68k_op_neg_16_pi(void)
517 {
518 	uint ea = EA_AY_PI_16();
519 	uint src = m68ki_read_16(ea);
520 	uint res = 0 - src;
521 
522 	FLAG_N = NFLAG_16(res);
523 	FLAG_C = FLAG_X = CFLAG_16(res);
524 	FLAG_V = (src & res)>>8;
525 	FLAG_Z = MASK_OUT_ABOVE_16(res);
526 
527 	m68ki_write_16(ea, FLAG_Z);
528 }
529 
530 
m68k_op_neg_16_pd(void)531 void m68k_op_neg_16_pd(void)
532 {
533 	uint ea = EA_AY_PD_16();
534 	uint src = m68ki_read_16(ea);
535 	uint res = 0 - src;
536 
537 	FLAG_N = NFLAG_16(res);
538 	FLAG_C = FLAG_X = CFLAG_16(res);
539 	FLAG_V = (src & res)>>8;
540 	FLAG_Z = MASK_OUT_ABOVE_16(res);
541 
542 	m68ki_write_16(ea, FLAG_Z);
543 }
544 
545 
m68k_op_neg_16_di(void)546 void m68k_op_neg_16_di(void)
547 {
548 	uint ea = EA_AY_DI_16();
549 	uint src = m68ki_read_16(ea);
550 	uint res = 0 - src;
551 
552 	FLAG_N = NFLAG_16(res);
553 	FLAG_C = FLAG_X = CFLAG_16(res);
554 	FLAG_V = (src & res)>>8;
555 	FLAG_Z = MASK_OUT_ABOVE_16(res);
556 
557 	m68ki_write_16(ea, FLAG_Z);
558 }
559 
560 
m68k_op_neg_16_ix(void)561 void m68k_op_neg_16_ix(void)
562 {
563 	uint ea = EA_AY_IX_16();
564 	uint src = m68ki_read_16(ea);
565 	uint res = 0 - src;
566 
567 	FLAG_N = NFLAG_16(res);
568 	FLAG_C = FLAG_X = CFLAG_16(res);
569 	FLAG_V = (src & res)>>8;
570 	FLAG_Z = MASK_OUT_ABOVE_16(res);
571 
572 	m68ki_write_16(ea, FLAG_Z);
573 }
574 
575 
m68k_op_neg_16_aw(void)576 void m68k_op_neg_16_aw(void)
577 {
578 	uint ea = EA_AW_16();
579 	uint src = m68ki_read_16(ea);
580 	uint res = 0 - src;
581 
582 	FLAG_N = NFLAG_16(res);
583 	FLAG_C = FLAG_X = CFLAG_16(res);
584 	FLAG_V = (src & res)>>8;
585 	FLAG_Z = MASK_OUT_ABOVE_16(res);
586 
587 	m68ki_write_16(ea, FLAG_Z);
588 }
589 
590 
m68k_op_neg_16_al(void)591 void m68k_op_neg_16_al(void)
592 {
593 	uint ea = EA_AL_16();
594 	uint src = m68ki_read_16(ea);
595 	uint res = 0 - src;
596 
597 	FLAG_N = NFLAG_16(res);
598 	FLAG_C = FLAG_X = CFLAG_16(res);
599 	FLAG_V = (src & res)>>8;
600 	FLAG_Z = MASK_OUT_ABOVE_16(res);
601 
602 	m68ki_write_16(ea, FLAG_Z);
603 }
604 
605 
m68k_op_neg_32_d(void)606 void m68k_op_neg_32_d(void)
607 {
608 	uint* r_dst = &DY;
609 	uint res = 0 - *r_dst;
610 
611 	FLAG_N = NFLAG_32(res);
612 	FLAG_C = FLAG_X = CFLAG_SUB_32(*r_dst, 0, res);
613 	FLAG_V = (*r_dst & res)>>24;
614 	FLAG_Z = MASK_OUT_ABOVE_32(res);
615 
616 	*r_dst = FLAG_Z;
617 }
618 
619 
m68k_op_neg_32_ai(void)620 void m68k_op_neg_32_ai(void)
621 {
622 	uint ea = EA_AY_AI_32();
623 	uint src = m68ki_read_32(ea);
624 	uint res = 0 - src;
625 
626 	FLAG_N = NFLAG_32(res);
627 	FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
628 	FLAG_V = (src & res)>>24;
629 	FLAG_Z = MASK_OUT_ABOVE_32(res);
630 
631 	m68ki_write_32(ea, FLAG_Z);
632 }
633 
634 
m68k_op_neg_32_pi(void)635 void m68k_op_neg_32_pi(void)
636 {
637 	uint ea = EA_AY_PI_32();
638 	uint src = m68ki_read_32(ea);
639 	uint res = 0 - src;
640 
641 	FLAG_N = NFLAG_32(res);
642 	FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
643 	FLAG_V = (src & res)>>24;
644 	FLAG_Z = MASK_OUT_ABOVE_32(res);
645 
646 	m68ki_write_32(ea, FLAG_Z);
647 }
648 
649 
m68k_op_neg_32_pd(void)650 void m68k_op_neg_32_pd(void)
651 {
652 	uint ea = EA_AY_PD_32();
653 	uint src = m68ki_read_32(ea);
654 	uint res = 0 - src;
655 
656 	FLAG_N = NFLAG_32(res);
657 	FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
658 	FLAG_V = (src & res)>>24;
659 	FLAG_Z = MASK_OUT_ABOVE_32(res);
660 
661 	m68ki_write_32(ea, FLAG_Z);
662 }
663 
664 
m68k_op_neg_32_di(void)665 void m68k_op_neg_32_di(void)
666 {
667 	uint ea = EA_AY_DI_32();
668 	uint src = m68ki_read_32(ea);
669 	uint res = 0 - src;
670 
671 	FLAG_N = NFLAG_32(res);
672 	FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
673 	FLAG_V = (src & res)>>24;
674 	FLAG_Z = MASK_OUT_ABOVE_32(res);
675 
676 	m68ki_write_32(ea, FLAG_Z);
677 }
678 
679 
m68k_op_neg_32_ix(void)680 void m68k_op_neg_32_ix(void)
681 {
682 	uint ea = EA_AY_IX_32();
683 	uint src = m68ki_read_32(ea);
684 	uint res = 0 - src;
685 
686 	FLAG_N = NFLAG_32(res);
687 	FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
688 	FLAG_V = (src & res)>>24;
689 	FLAG_Z = MASK_OUT_ABOVE_32(res);
690 
691 	m68ki_write_32(ea, FLAG_Z);
692 }
693 
694 
m68k_op_neg_32_aw(void)695 void m68k_op_neg_32_aw(void)
696 {
697 	uint ea = EA_AW_32();
698 	uint src = m68ki_read_32(ea);
699 	uint res = 0 - src;
700 
701 	FLAG_N = NFLAG_32(res);
702 	FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
703 	FLAG_V = (src & res)>>24;
704 	FLAG_Z = MASK_OUT_ABOVE_32(res);
705 
706 	m68ki_write_32(ea, FLAG_Z);
707 }
708 
709 
m68k_op_neg_32_al(void)710 void m68k_op_neg_32_al(void)
711 {
712 	uint ea = EA_AL_32();
713 	uint src = m68ki_read_32(ea);
714 	uint res = 0 - src;
715 
716 	FLAG_N = NFLAG_32(res);
717 	FLAG_C = FLAG_X = CFLAG_SUB_32(src, 0, res);
718 	FLAG_V = (src & res)>>24;
719 	FLAG_Z = MASK_OUT_ABOVE_32(res);
720 
721 	m68ki_write_32(ea, FLAG_Z);
722 }
723 
724 
m68k_op_negx_8_d(void)725 void m68k_op_negx_8_d(void)
726 {
727 	uint* r_dst = &DY;
728 	uint res = 0 - MASK_OUT_ABOVE_8(*r_dst) - XFLAG_AS_1();
729 
730 	FLAG_N = NFLAG_8(res);
731 	FLAG_X = FLAG_C = CFLAG_8(res);
732 	FLAG_V = *r_dst & res;
733 
734 	res = MASK_OUT_ABOVE_8(res);
735 	FLAG_Z |= res;
736 
737 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
738 }
739 
740 
m68k_op_negx_8_ai(void)741 void m68k_op_negx_8_ai(void)
742 {
743 	uint ea = EA_AY_AI_8();
744 	uint src = m68ki_read_8(ea);
745 	uint res = 0 - src - XFLAG_AS_1();
746 
747 	FLAG_N = NFLAG_8(res);
748 	FLAG_X = FLAG_C = CFLAG_8(res);
749 	FLAG_V = src & res;
750 
751 	res = MASK_OUT_ABOVE_8(res);
752 	FLAG_Z |= res;
753 
754 	m68ki_write_8(ea, res);
755 }
756 
757 
m68k_op_negx_8_pi(void)758 void m68k_op_negx_8_pi(void)
759 {
760 	uint ea = EA_AY_PI_8();
761 	uint src = m68ki_read_8(ea);
762 	uint res = 0 - src - XFLAG_AS_1();
763 
764 	FLAG_N = NFLAG_8(res);
765 	FLAG_X = FLAG_C = CFLAG_8(res);
766 	FLAG_V = src & res;
767 
768 	res = MASK_OUT_ABOVE_8(res);
769 	FLAG_Z |= res;
770 
771 	m68ki_write_8(ea, res);
772 }
773 
774 
m68k_op_negx_8_pi7(void)775 void m68k_op_negx_8_pi7(void)
776 {
777 	uint ea = EA_A7_PI_8();
778 	uint src = m68ki_read_8(ea);
779 	uint res = 0 - src - XFLAG_AS_1();
780 
781 	FLAG_N = NFLAG_8(res);
782 	FLAG_X = FLAG_C = CFLAG_8(res);
783 	FLAG_V = src & res;
784 
785 	res = MASK_OUT_ABOVE_8(res);
786 	FLAG_Z |= res;
787 
788 	m68ki_write_8(ea, res);
789 }
790 
791 
m68k_op_negx_8_pd(void)792 void m68k_op_negx_8_pd(void)
793 {
794 	uint ea = EA_AY_PD_8();
795 	uint src = m68ki_read_8(ea);
796 	uint res = 0 - src - XFLAG_AS_1();
797 
798 	FLAG_N = NFLAG_8(res);
799 	FLAG_X = FLAG_C = CFLAG_8(res);
800 	FLAG_V = src & res;
801 
802 	res = MASK_OUT_ABOVE_8(res);
803 	FLAG_Z |= res;
804 
805 	m68ki_write_8(ea, res);
806 }
807 
808 
m68k_op_negx_8_pd7(void)809 void m68k_op_negx_8_pd7(void)
810 {
811 	uint ea = EA_A7_PD_8();
812 	uint src = m68ki_read_8(ea);
813 	uint res = 0 - src - XFLAG_AS_1();
814 
815 	FLAG_N = NFLAG_8(res);
816 	FLAG_X = FLAG_C = CFLAG_8(res);
817 	FLAG_V = src & res;
818 
819 	res = MASK_OUT_ABOVE_8(res);
820 	FLAG_Z |= res;
821 
822 	m68ki_write_8(ea, res);
823 }
824 
825 
m68k_op_negx_8_di(void)826 void m68k_op_negx_8_di(void)
827 {
828 	uint ea = EA_AY_DI_8();
829 	uint src = m68ki_read_8(ea);
830 	uint res = 0 - src - XFLAG_AS_1();
831 
832 	FLAG_N = NFLAG_8(res);
833 	FLAG_X = FLAG_C = CFLAG_8(res);
834 	FLAG_V = src & res;
835 
836 	res = MASK_OUT_ABOVE_8(res);
837 	FLAG_Z |= res;
838 
839 	m68ki_write_8(ea, res);
840 }
841 
842 
m68k_op_negx_8_ix(void)843 void m68k_op_negx_8_ix(void)
844 {
845 	uint ea = EA_AY_IX_8();
846 	uint src = m68ki_read_8(ea);
847 	uint res = 0 - src - XFLAG_AS_1();
848 
849 	FLAG_N = NFLAG_8(res);
850 	FLAG_X = FLAG_C = CFLAG_8(res);
851 	FLAG_V = src & res;
852 
853 	res = MASK_OUT_ABOVE_8(res);
854 	FLAG_Z |= res;
855 
856 	m68ki_write_8(ea, res);
857 }
858 
859 
m68k_op_negx_8_aw(void)860 void m68k_op_negx_8_aw(void)
861 {
862 	uint ea = EA_AW_8();
863 	uint src = m68ki_read_8(ea);
864 	uint res = 0 - src - XFLAG_AS_1();
865 
866 	FLAG_N = NFLAG_8(res);
867 	FLAG_X = FLAG_C = CFLAG_8(res);
868 	FLAG_V = src & res;
869 
870 	res = MASK_OUT_ABOVE_8(res);
871 	FLAG_Z |= res;
872 
873 	m68ki_write_8(ea, res);
874 }
875 
876 
m68k_op_negx_8_al(void)877 void m68k_op_negx_8_al(void)
878 {
879 	uint ea = EA_AL_8();
880 	uint src = m68ki_read_8(ea);
881 	uint res = 0 - src - XFLAG_AS_1();
882 
883 	FLAG_N = NFLAG_8(res);
884 	FLAG_X = FLAG_C = CFLAG_8(res);
885 	FLAG_V = src & res;
886 
887 	res = MASK_OUT_ABOVE_8(res);
888 	FLAG_Z |= res;
889 
890 	m68ki_write_8(ea, res);
891 }
892 
893 
m68k_op_negx_16_d(void)894 void m68k_op_negx_16_d(void)
895 {
896 	uint* r_dst = &DY;
897 	uint res = 0 - MASK_OUT_ABOVE_16(*r_dst) - XFLAG_AS_1();
898 
899 	FLAG_N = NFLAG_16(res);
900 	FLAG_X = FLAG_C = CFLAG_16(res);
901 	FLAG_V = (*r_dst & res)>>8;
902 
903 	res = MASK_OUT_ABOVE_16(res);
904 	FLAG_Z |= res;
905 
906 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
907 }
908 
909 
m68k_op_negx_16_ai(void)910 void m68k_op_negx_16_ai(void)
911 {
912 	uint ea  = EA_AY_AI_16();
913 	uint src = m68ki_read_16(ea);
914 	uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
915 
916 	FLAG_N = NFLAG_16(res);
917 	FLAG_X = FLAG_C = CFLAG_16(res);
918 	FLAG_V = (src & res)>>8;
919 
920 	res = MASK_OUT_ABOVE_16(res);
921 	FLAG_Z |= res;
922 
923 	m68ki_write_16(ea, res);
924 }
925 
926 
m68k_op_negx_16_pi(void)927 void m68k_op_negx_16_pi(void)
928 {
929 	uint ea  = EA_AY_PI_16();
930 	uint src = m68ki_read_16(ea);
931 	uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
932 
933 	FLAG_N = NFLAG_16(res);
934 	FLAG_X = FLAG_C = CFLAG_16(res);
935 	FLAG_V = (src & res)>>8;
936 
937 	res = MASK_OUT_ABOVE_16(res);
938 	FLAG_Z |= res;
939 
940 	m68ki_write_16(ea, res);
941 }
942 
943 
m68k_op_negx_16_pd(void)944 void m68k_op_negx_16_pd(void)
945 {
946 	uint ea  = EA_AY_PD_16();
947 	uint src = m68ki_read_16(ea);
948 	uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
949 
950 	FLAG_N = NFLAG_16(res);
951 	FLAG_X = FLAG_C = CFLAG_16(res);
952 	FLAG_V = (src & res)>>8;
953 
954 	res = MASK_OUT_ABOVE_16(res);
955 	FLAG_Z |= res;
956 
957 	m68ki_write_16(ea, res);
958 }
959 
960 
m68k_op_negx_16_di(void)961 void m68k_op_negx_16_di(void)
962 {
963 	uint ea  = EA_AY_DI_16();
964 	uint src = m68ki_read_16(ea);
965 	uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
966 
967 	FLAG_N = NFLAG_16(res);
968 	FLAG_X = FLAG_C = CFLAG_16(res);
969 	FLAG_V = (src & res)>>8;
970 
971 	res = MASK_OUT_ABOVE_16(res);
972 	FLAG_Z |= res;
973 
974 	m68ki_write_16(ea, res);
975 }
976 
977 
m68k_op_negx_16_ix(void)978 void m68k_op_negx_16_ix(void)
979 {
980 	uint ea  = EA_AY_IX_16();
981 	uint src = m68ki_read_16(ea);
982 	uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
983 
984 	FLAG_N = NFLAG_16(res);
985 	FLAG_X = FLAG_C = CFLAG_16(res);
986 	FLAG_V = (src & res)>>8;
987 
988 	res = MASK_OUT_ABOVE_16(res);
989 	FLAG_Z |= res;
990 
991 	m68ki_write_16(ea, res);
992 }
993 
994 
m68k_op_negx_16_aw(void)995 void m68k_op_negx_16_aw(void)
996 {
997 	uint ea  = EA_AW_16();
998 	uint src = m68ki_read_16(ea);
999 	uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
1000 
1001 	FLAG_N = NFLAG_16(res);
1002 	FLAG_X = FLAG_C = CFLAG_16(res);
1003 	FLAG_V = (src & res)>>8;
1004 
1005 	res = MASK_OUT_ABOVE_16(res);
1006 	FLAG_Z |= res;
1007 
1008 	m68ki_write_16(ea, res);
1009 }
1010 
1011 
m68k_op_negx_16_al(void)1012 void m68k_op_negx_16_al(void)
1013 {
1014 	uint ea  = EA_AL_16();
1015 	uint src = m68ki_read_16(ea);
1016 	uint res = 0 - MASK_OUT_ABOVE_16(src) - XFLAG_AS_1();
1017 
1018 	FLAG_N = NFLAG_16(res);
1019 	FLAG_X = FLAG_C = CFLAG_16(res);
1020 	FLAG_V = (src & res)>>8;
1021 
1022 	res = MASK_OUT_ABOVE_16(res);
1023 	FLAG_Z |= res;
1024 
1025 	m68ki_write_16(ea, res);
1026 }
1027 
1028 
m68k_op_negx_32_d(void)1029 void m68k_op_negx_32_d(void)
1030 {
1031 	uint* r_dst = &DY;
1032 	uint res = 0 - MASK_OUT_ABOVE_32(*r_dst) - XFLAG_AS_1();
1033 
1034 	FLAG_N = NFLAG_32(res);
1035 	FLAG_X = FLAG_C = CFLAG_SUB_32(*r_dst, 0, res);
1036 	FLAG_V = (*r_dst & res)>>24;
1037 
1038 	res = MASK_OUT_ABOVE_32(res);
1039 	FLAG_Z |= res;
1040 
1041 	*r_dst = res;
1042 }
1043 
1044 
m68k_op_negx_32_ai(void)1045 void m68k_op_negx_32_ai(void)
1046 {
1047 	uint ea  = EA_AY_AI_32();
1048 	uint src = m68ki_read_32(ea);
1049 	uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1050 
1051 	FLAG_N = NFLAG_32(res);
1052 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1053 	FLAG_V = (src & res)>>24;
1054 
1055 	res = MASK_OUT_ABOVE_32(res);
1056 	FLAG_Z |= res;
1057 
1058 	m68ki_write_32(ea, res);
1059 }
1060 
1061 
m68k_op_negx_32_pi(void)1062 void m68k_op_negx_32_pi(void)
1063 {
1064 	uint ea  = EA_AY_PI_32();
1065 	uint src = m68ki_read_32(ea);
1066 	uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1067 
1068 	FLAG_N = NFLAG_32(res);
1069 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1070 	FLAG_V = (src & res)>>24;
1071 
1072 	res = MASK_OUT_ABOVE_32(res);
1073 	FLAG_Z |= res;
1074 
1075 	m68ki_write_32(ea, res);
1076 }
1077 
1078 
m68k_op_negx_32_pd(void)1079 void m68k_op_negx_32_pd(void)
1080 {
1081 	uint ea  = EA_AY_PD_32();
1082 	uint src = m68ki_read_32(ea);
1083 	uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1084 
1085 	FLAG_N = NFLAG_32(res);
1086 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1087 	FLAG_V = (src & res)>>24;
1088 
1089 	res = MASK_OUT_ABOVE_32(res);
1090 	FLAG_Z |= res;
1091 
1092 	m68ki_write_32(ea, res);
1093 }
1094 
1095 
m68k_op_negx_32_di(void)1096 void m68k_op_negx_32_di(void)
1097 {
1098 	uint ea  = EA_AY_DI_32();
1099 	uint src = m68ki_read_32(ea);
1100 	uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1101 
1102 	FLAG_N = NFLAG_32(res);
1103 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1104 	FLAG_V = (src & res)>>24;
1105 
1106 	res = MASK_OUT_ABOVE_32(res);
1107 	FLAG_Z |= res;
1108 
1109 	m68ki_write_32(ea, res);
1110 }
1111 
1112 
m68k_op_negx_32_ix(void)1113 void m68k_op_negx_32_ix(void)
1114 {
1115 	uint ea  = EA_AY_IX_32();
1116 	uint src = m68ki_read_32(ea);
1117 	uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1118 
1119 	FLAG_N = NFLAG_32(res);
1120 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1121 	FLAG_V = (src & res)>>24;
1122 
1123 	res = MASK_OUT_ABOVE_32(res);
1124 	FLAG_Z |= res;
1125 
1126 	m68ki_write_32(ea, res);
1127 }
1128 
1129 
m68k_op_negx_32_aw(void)1130 void m68k_op_negx_32_aw(void)
1131 {
1132 	uint ea  = EA_AW_32();
1133 	uint src = m68ki_read_32(ea);
1134 	uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1135 
1136 	FLAG_N = NFLAG_32(res);
1137 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1138 	FLAG_V = (src & res)>>24;
1139 
1140 	res = MASK_OUT_ABOVE_32(res);
1141 	FLAG_Z |= res;
1142 
1143 	m68ki_write_32(ea, res);
1144 }
1145 
1146 
m68k_op_negx_32_al(void)1147 void m68k_op_negx_32_al(void)
1148 {
1149 	uint ea  = EA_AL_32();
1150 	uint src = m68ki_read_32(ea);
1151 	uint res = 0 - MASK_OUT_ABOVE_32(src) - XFLAG_AS_1();
1152 
1153 	FLAG_N = NFLAG_32(res);
1154 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, 0, res);
1155 	FLAG_V = (src & res)>>24;
1156 
1157 	res = MASK_OUT_ABOVE_32(res);
1158 	FLAG_Z |= res;
1159 
1160 	m68ki_write_32(ea, res);
1161 }
1162 
1163 
m68k_op_nop(void)1164 void m68k_op_nop(void)
1165 {
1166 	m68ki_trace_t0();				   /* auto-disable (see m68kcpu.h) */
1167 }
1168 
1169 
m68k_op_not_8_d(void)1170 void m68k_op_not_8_d(void)
1171 {
1172 	uint* r_dst = &DY;
1173 	uint res = MASK_OUT_ABOVE_8(~*r_dst);
1174 
1175 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
1176 
1177 	FLAG_N = NFLAG_8(res);
1178 	FLAG_Z = res;
1179 	FLAG_C = CFLAG_CLEAR;
1180 	FLAG_V = VFLAG_CLEAR;
1181 }
1182 
1183 
m68k_op_not_8_ai(void)1184 void m68k_op_not_8_ai(void)
1185 {
1186 	uint ea = EA_AY_AI_8();
1187 	uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1188 
1189 	m68ki_write_8(ea, res);
1190 
1191 	FLAG_N = NFLAG_8(res);
1192 	FLAG_Z = res;
1193 	FLAG_C = CFLAG_CLEAR;
1194 	FLAG_V = VFLAG_CLEAR;
1195 }
1196 
1197 
m68k_op_not_8_pi(void)1198 void m68k_op_not_8_pi(void)
1199 {
1200 	uint ea = EA_AY_PI_8();
1201 	uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1202 
1203 	m68ki_write_8(ea, res);
1204 
1205 	FLAG_N = NFLAG_8(res);
1206 	FLAG_Z = res;
1207 	FLAG_C = CFLAG_CLEAR;
1208 	FLAG_V = VFLAG_CLEAR;
1209 }
1210 
1211 
m68k_op_not_8_pi7(void)1212 void m68k_op_not_8_pi7(void)
1213 {
1214 	uint ea = EA_A7_PI_8();
1215 	uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1216 
1217 	m68ki_write_8(ea, res);
1218 
1219 	FLAG_N = NFLAG_8(res);
1220 	FLAG_Z = res;
1221 	FLAG_C = CFLAG_CLEAR;
1222 	FLAG_V = VFLAG_CLEAR;
1223 }
1224 
1225 
m68k_op_not_8_pd(void)1226 void m68k_op_not_8_pd(void)
1227 {
1228 	uint ea = EA_AY_PD_8();
1229 	uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1230 
1231 	m68ki_write_8(ea, res);
1232 
1233 	FLAG_N = NFLAG_8(res);
1234 	FLAG_Z = res;
1235 	FLAG_C = CFLAG_CLEAR;
1236 	FLAG_V = VFLAG_CLEAR;
1237 }
1238 
1239 
m68k_op_not_8_pd7(void)1240 void m68k_op_not_8_pd7(void)
1241 {
1242 	uint ea = EA_A7_PD_8();
1243 	uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1244 
1245 	m68ki_write_8(ea, res);
1246 
1247 	FLAG_N = NFLAG_8(res);
1248 	FLAG_Z = res;
1249 	FLAG_C = CFLAG_CLEAR;
1250 	FLAG_V = VFLAG_CLEAR;
1251 }
1252 
1253 
m68k_op_not_8_di(void)1254 void m68k_op_not_8_di(void)
1255 {
1256 	uint ea = EA_AY_DI_8();
1257 	uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1258 
1259 	m68ki_write_8(ea, res);
1260 
1261 	FLAG_N = NFLAG_8(res);
1262 	FLAG_Z = res;
1263 	FLAG_C = CFLAG_CLEAR;
1264 	FLAG_V = VFLAG_CLEAR;
1265 }
1266 
1267 
m68k_op_not_8_ix(void)1268 void m68k_op_not_8_ix(void)
1269 {
1270 	uint ea = EA_AY_IX_8();
1271 	uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1272 
1273 	m68ki_write_8(ea, res);
1274 
1275 	FLAG_N = NFLAG_8(res);
1276 	FLAG_Z = res;
1277 	FLAG_C = CFLAG_CLEAR;
1278 	FLAG_V = VFLAG_CLEAR;
1279 }
1280 
1281 
m68k_op_not_8_aw(void)1282 void m68k_op_not_8_aw(void)
1283 {
1284 	uint ea = EA_AW_8();
1285 	uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1286 
1287 	m68ki_write_8(ea, res);
1288 
1289 	FLAG_N = NFLAG_8(res);
1290 	FLAG_Z = res;
1291 	FLAG_C = CFLAG_CLEAR;
1292 	FLAG_V = VFLAG_CLEAR;
1293 }
1294 
1295 
m68k_op_not_8_al(void)1296 void m68k_op_not_8_al(void)
1297 {
1298 	uint ea = EA_AL_8();
1299 	uint res = MASK_OUT_ABOVE_8(~m68ki_read_8(ea));
1300 
1301 	m68ki_write_8(ea, res);
1302 
1303 	FLAG_N = NFLAG_8(res);
1304 	FLAG_Z = res;
1305 	FLAG_C = CFLAG_CLEAR;
1306 	FLAG_V = VFLAG_CLEAR;
1307 }
1308 
1309 
m68k_op_not_16_d(void)1310 void m68k_op_not_16_d(void)
1311 {
1312 	uint* r_dst = &DY;
1313 	uint res = MASK_OUT_ABOVE_16(~*r_dst);
1314 
1315 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
1316 
1317 	FLAG_N = NFLAG_16(res);
1318 	FLAG_Z = res;
1319 	FLAG_C = CFLAG_CLEAR;
1320 	FLAG_V = VFLAG_CLEAR;
1321 }
1322 
1323 
m68k_op_not_16_ai(void)1324 void m68k_op_not_16_ai(void)
1325 {
1326 	uint ea = EA_AY_AI_16();
1327 	uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1328 
1329 	m68ki_write_16(ea, res);
1330 
1331 	FLAG_N = NFLAG_16(res);
1332 	FLAG_Z = res;
1333 	FLAG_C = CFLAG_CLEAR;
1334 	FLAG_V = VFLAG_CLEAR;
1335 }
1336 
1337 
m68k_op_not_16_pi(void)1338 void m68k_op_not_16_pi(void)
1339 {
1340 	uint ea = EA_AY_PI_16();
1341 	uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1342 
1343 	m68ki_write_16(ea, res);
1344 
1345 	FLAG_N = NFLAG_16(res);
1346 	FLAG_Z = res;
1347 	FLAG_C = CFLAG_CLEAR;
1348 	FLAG_V = VFLAG_CLEAR;
1349 }
1350 
1351 
m68k_op_not_16_pd(void)1352 void m68k_op_not_16_pd(void)
1353 {
1354 	uint ea = EA_AY_PD_16();
1355 	uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1356 
1357 	m68ki_write_16(ea, res);
1358 
1359 	FLAG_N = NFLAG_16(res);
1360 	FLAG_Z = res;
1361 	FLAG_C = CFLAG_CLEAR;
1362 	FLAG_V = VFLAG_CLEAR;
1363 }
1364 
1365 
m68k_op_not_16_di(void)1366 void m68k_op_not_16_di(void)
1367 {
1368 	uint ea = EA_AY_DI_16();
1369 	uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1370 
1371 	m68ki_write_16(ea, res);
1372 
1373 	FLAG_N = NFLAG_16(res);
1374 	FLAG_Z = res;
1375 	FLAG_C = CFLAG_CLEAR;
1376 	FLAG_V = VFLAG_CLEAR;
1377 }
1378 
1379 
m68k_op_not_16_ix(void)1380 void m68k_op_not_16_ix(void)
1381 {
1382 	uint ea = EA_AY_IX_16();
1383 	uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1384 
1385 	m68ki_write_16(ea, res);
1386 
1387 	FLAG_N = NFLAG_16(res);
1388 	FLAG_Z = res;
1389 	FLAG_C = CFLAG_CLEAR;
1390 	FLAG_V = VFLAG_CLEAR;
1391 }
1392 
1393 
m68k_op_not_16_aw(void)1394 void m68k_op_not_16_aw(void)
1395 {
1396 	uint ea = EA_AW_16();
1397 	uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1398 
1399 	m68ki_write_16(ea, res);
1400 
1401 	FLAG_N = NFLAG_16(res);
1402 	FLAG_Z = res;
1403 	FLAG_C = CFLAG_CLEAR;
1404 	FLAG_V = VFLAG_CLEAR;
1405 }
1406 
1407 
m68k_op_not_16_al(void)1408 void m68k_op_not_16_al(void)
1409 {
1410 	uint ea = EA_AL_16();
1411 	uint res = MASK_OUT_ABOVE_16(~m68ki_read_16(ea));
1412 
1413 	m68ki_write_16(ea, res);
1414 
1415 	FLAG_N = NFLAG_16(res);
1416 	FLAG_Z = res;
1417 	FLAG_C = CFLAG_CLEAR;
1418 	FLAG_V = VFLAG_CLEAR;
1419 }
1420 
1421 
m68k_op_not_32_d(void)1422 void m68k_op_not_32_d(void)
1423 {
1424 	uint* r_dst = &DY;
1425 	uint res = *r_dst = MASK_OUT_ABOVE_32(~*r_dst);
1426 
1427 	FLAG_N = NFLAG_32(res);
1428 	FLAG_Z = res;
1429 	FLAG_C = CFLAG_CLEAR;
1430 	FLAG_V = VFLAG_CLEAR;
1431 }
1432 
1433 
m68k_op_not_32_ai(void)1434 void m68k_op_not_32_ai(void)
1435 {
1436 	uint ea = EA_AY_AI_32();
1437 	uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1438 
1439 	m68ki_write_32(ea, res);
1440 
1441 	FLAG_N = NFLAG_32(res);
1442 	FLAG_Z = res;
1443 	FLAG_C = CFLAG_CLEAR;
1444 	FLAG_V = VFLAG_CLEAR;
1445 }
1446 
1447 
m68k_op_not_32_pi(void)1448 void m68k_op_not_32_pi(void)
1449 {
1450 	uint ea = EA_AY_PI_32();
1451 	uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1452 
1453 	m68ki_write_32(ea, res);
1454 
1455 	FLAG_N = NFLAG_32(res);
1456 	FLAG_Z = res;
1457 	FLAG_C = CFLAG_CLEAR;
1458 	FLAG_V = VFLAG_CLEAR;
1459 }
1460 
1461 
m68k_op_not_32_pd(void)1462 void m68k_op_not_32_pd(void)
1463 {
1464 	uint ea = EA_AY_PD_32();
1465 	uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1466 
1467 	m68ki_write_32(ea, res);
1468 
1469 	FLAG_N = NFLAG_32(res);
1470 	FLAG_Z = res;
1471 	FLAG_C = CFLAG_CLEAR;
1472 	FLAG_V = VFLAG_CLEAR;
1473 }
1474 
1475 
m68k_op_not_32_di(void)1476 void m68k_op_not_32_di(void)
1477 {
1478 	uint ea = EA_AY_DI_32();
1479 	uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1480 
1481 	m68ki_write_32(ea, res);
1482 
1483 	FLAG_N = NFLAG_32(res);
1484 	FLAG_Z = res;
1485 	FLAG_C = CFLAG_CLEAR;
1486 	FLAG_V = VFLAG_CLEAR;
1487 }
1488 
1489 
m68k_op_not_32_ix(void)1490 void m68k_op_not_32_ix(void)
1491 {
1492 	uint ea = EA_AY_IX_32();
1493 	uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1494 
1495 	m68ki_write_32(ea, res);
1496 
1497 	FLAG_N = NFLAG_32(res);
1498 	FLAG_Z = res;
1499 	FLAG_C = CFLAG_CLEAR;
1500 	FLAG_V = VFLAG_CLEAR;
1501 }
1502 
1503 
m68k_op_not_32_aw(void)1504 void m68k_op_not_32_aw(void)
1505 {
1506 	uint ea = EA_AW_32();
1507 	uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1508 
1509 	m68ki_write_32(ea, res);
1510 
1511 	FLAG_N = NFLAG_32(res);
1512 	FLAG_Z = res;
1513 	FLAG_C = CFLAG_CLEAR;
1514 	FLAG_V = VFLAG_CLEAR;
1515 }
1516 
1517 
m68k_op_not_32_al(void)1518 void m68k_op_not_32_al(void)
1519 {
1520 	uint ea = EA_AL_32();
1521 	uint res = MASK_OUT_ABOVE_32(~m68ki_read_32(ea));
1522 
1523 	m68ki_write_32(ea, res);
1524 
1525 	FLAG_N = NFLAG_32(res);
1526 	FLAG_Z = res;
1527 	FLAG_C = CFLAG_CLEAR;
1528 	FLAG_V = VFLAG_CLEAR;
1529 }
1530 
1531 
m68k_op_or_8_er_d(void)1532 void m68k_op_or_8_er_d(void)
1533 {
1534 	uint res = MASK_OUT_ABOVE_8((DX |= MASK_OUT_ABOVE_8(DY)));
1535 
1536 	FLAG_N = NFLAG_8(res);
1537 	FLAG_Z = res;
1538 	FLAG_C = CFLAG_CLEAR;
1539 	FLAG_V = VFLAG_CLEAR;
1540 }
1541 
1542 
m68k_op_or_8_er_ai(void)1543 void m68k_op_or_8_er_ai(void)
1544 {
1545 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_AI_8()));
1546 
1547 	FLAG_N = NFLAG_8(res);
1548 	FLAG_Z = res;
1549 	FLAG_C = CFLAG_CLEAR;
1550 	FLAG_V = VFLAG_CLEAR;
1551 }
1552 
1553 
m68k_op_or_8_er_pi(void)1554 void m68k_op_or_8_er_pi(void)
1555 {
1556 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PI_8()));
1557 
1558 	FLAG_N = NFLAG_8(res);
1559 	FLAG_Z = res;
1560 	FLAG_C = CFLAG_CLEAR;
1561 	FLAG_V = VFLAG_CLEAR;
1562 }
1563 
1564 
m68k_op_or_8_er_pi7(void)1565 void m68k_op_or_8_er_pi7(void)
1566 {
1567 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PI_8()));
1568 
1569 	FLAG_N = NFLAG_8(res);
1570 	FLAG_Z = res;
1571 	FLAG_C = CFLAG_CLEAR;
1572 	FLAG_V = VFLAG_CLEAR;
1573 }
1574 
1575 
m68k_op_or_8_er_pd(void)1576 void m68k_op_or_8_er_pd(void)
1577 {
1578 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_PD_8()));
1579 
1580 	FLAG_N = NFLAG_8(res);
1581 	FLAG_Z = res;
1582 	FLAG_C = CFLAG_CLEAR;
1583 	FLAG_V = VFLAG_CLEAR;
1584 }
1585 
1586 
m68k_op_or_8_er_pd7(void)1587 void m68k_op_or_8_er_pd7(void)
1588 {
1589 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_A7_PD_8()));
1590 
1591 	FLAG_N = NFLAG_8(res);
1592 	FLAG_Z = res;
1593 	FLAG_C = CFLAG_CLEAR;
1594 	FLAG_V = VFLAG_CLEAR;
1595 }
1596 
1597 
m68k_op_or_8_er_di(void)1598 void m68k_op_or_8_er_di(void)
1599 {
1600 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_DI_8()));
1601 
1602 	FLAG_N = NFLAG_8(res);
1603 	FLAG_Z = res;
1604 	FLAG_C = CFLAG_CLEAR;
1605 	FLAG_V = VFLAG_CLEAR;
1606 }
1607 
1608 
m68k_op_or_8_er_ix(void)1609 void m68k_op_or_8_er_ix(void)
1610 {
1611 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_AY_IX_8()));
1612 
1613 	FLAG_N = NFLAG_8(res);
1614 	FLAG_Z = res;
1615 	FLAG_C = CFLAG_CLEAR;
1616 	FLAG_V = VFLAG_CLEAR;
1617 }
1618 
1619 
m68k_op_or_8_er_aw(void)1620 void m68k_op_or_8_er_aw(void)
1621 {
1622 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_AW_8()));
1623 
1624 	FLAG_N = NFLAG_8(res);
1625 	FLAG_Z = res;
1626 	FLAG_C = CFLAG_CLEAR;
1627 	FLAG_V = VFLAG_CLEAR;
1628 }
1629 
1630 
m68k_op_or_8_er_al(void)1631 void m68k_op_or_8_er_al(void)
1632 {
1633 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_AL_8()));
1634 
1635 	FLAG_N = NFLAG_8(res);
1636 	FLAG_Z = res;
1637 	FLAG_C = CFLAG_CLEAR;
1638 	FLAG_V = VFLAG_CLEAR;
1639 }
1640 
1641 
m68k_op_or_8_er_pcdi(void)1642 void m68k_op_or_8_er_pcdi(void)
1643 {
1644 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCDI_8()));
1645 
1646 	FLAG_N = NFLAG_8(res);
1647 	FLAG_Z = res;
1648 	FLAG_C = CFLAG_CLEAR;
1649 	FLAG_V = VFLAG_CLEAR;
1650 }
1651 
1652 
m68k_op_or_8_er_pcix(void)1653 void m68k_op_or_8_er_pcix(void)
1654 {
1655 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_PCIX_8()));
1656 
1657 	FLAG_N = NFLAG_8(res);
1658 	FLAG_Z = res;
1659 	FLAG_C = CFLAG_CLEAR;
1660 	FLAG_V = VFLAG_CLEAR;
1661 }
1662 
1663 
m68k_op_or_8_er_i(void)1664 void m68k_op_or_8_er_i(void)
1665 {
1666 	uint res = MASK_OUT_ABOVE_8((DX |= OPER_I_8()));
1667 
1668 	FLAG_N = NFLAG_8(res);
1669 	FLAG_Z = res;
1670 	FLAG_C = CFLAG_CLEAR;
1671 	FLAG_V = VFLAG_CLEAR;
1672 }
1673 
1674 
m68k_op_or_16_er_d(void)1675 void m68k_op_or_16_er_d(void)
1676 {
1677 	uint res = MASK_OUT_ABOVE_16((DX |= MASK_OUT_ABOVE_16(DY)));
1678 
1679 	FLAG_N = NFLAG_16(res);
1680 	FLAG_Z = res;
1681 	FLAG_C = CFLAG_CLEAR;
1682 	FLAG_V = VFLAG_CLEAR;
1683 }
1684 
1685 
m68k_op_or_16_er_ai(void)1686 void m68k_op_or_16_er_ai(void)
1687 {
1688 	uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_AI_16()));
1689 
1690 	FLAG_N = NFLAG_16(res);
1691 	FLAG_Z = res;
1692 	FLAG_C = CFLAG_CLEAR;
1693 	FLAG_V = VFLAG_CLEAR;
1694 }
1695 
1696 
m68k_op_or_16_er_pi(void)1697 void m68k_op_or_16_er_pi(void)
1698 {
1699 	uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PI_16()));
1700 
1701 	FLAG_N = NFLAG_16(res);
1702 	FLAG_Z = res;
1703 	FLAG_C = CFLAG_CLEAR;
1704 	FLAG_V = VFLAG_CLEAR;
1705 }
1706 
1707 
m68k_op_or_16_er_pd(void)1708 void m68k_op_or_16_er_pd(void)
1709 {
1710 	uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_PD_16()));
1711 
1712 	FLAG_N = NFLAG_16(res);
1713 	FLAG_Z = res;
1714 	FLAG_C = CFLAG_CLEAR;
1715 	FLAG_V = VFLAG_CLEAR;
1716 }
1717 
1718 
m68k_op_or_16_er_di(void)1719 void m68k_op_or_16_er_di(void)
1720 {
1721 	uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_DI_16()));
1722 
1723 	FLAG_N = NFLAG_16(res);
1724 	FLAG_Z = res;
1725 	FLAG_C = CFLAG_CLEAR;
1726 	FLAG_V = VFLAG_CLEAR;
1727 }
1728 
1729 
m68k_op_or_16_er_ix(void)1730 void m68k_op_or_16_er_ix(void)
1731 {
1732 	uint res = MASK_OUT_ABOVE_16((DX |= OPER_AY_IX_16()));
1733 
1734 	FLAG_N = NFLAG_16(res);
1735 	FLAG_Z = res;
1736 	FLAG_C = CFLAG_CLEAR;
1737 	FLAG_V = VFLAG_CLEAR;
1738 }
1739 
1740 
m68k_op_or_16_er_aw(void)1741 void m68k_op_or_16_er_aw(void)
1742 {
1743 	uint res = MASK_OUT_ABOVE_16((DX |= OPER_AW_16()));
1744 
1745 	FLAG_N = NFLAG_16(res);
1746 	FLAG_Z = res;
1747 	FLAG_C = CFLAG_CLEAR;
1748 	FLAG_V = VFLAG_CLEAR;
1749 }
1750 
1751 
m68k_op_or_16_er_al(void)1752 void m68k_op_or_16_er_al(void)
1753 {
1754 	uint res = MASK_OUT_ABOVE_16((DX |= OPER_AL_16()));
1755 
1756 	FLAG_N = NFLAG_16(res);
1757 	FLAG_Z = res;
1758 	FLAG_C = CFLAG_CLEAR;
1759 	FLAG_V = VFLAG_CLEAR;
1760 }
1761 
1762 
m68k_op_or_16_er_pcdi(void)1763 void m68k_op_or_16_er_pcdi(void)
1764 {
1765 	uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCDI_16()));
1766 
1767 	FLAG_N = NFLAG_16(res);
1768 	FLAG_Z = res;
1769 	FLAG_C = CFLAG_CLEAR;
1770 	FLAG_V = VFLAG_CLEAR;
1771 }
1772 
1773 
m68k_op_or_16_er_pcix(void)1774 void m68k_op_or_16_er_pcix(void)
1775 {
1776 	uint res = MASK_OUT_ABOVE_16((DX |= OPER_PCIX_16()));
1777 
1778 	FLAG_N = NFLAG_16(res);
1779 	FLAG_Z = res;
1780 	FLAG_C = CFLAG_CLEAR;
1781 	FLAG_V = VFLAG_CLEAR;
1782 }
1783 
1784 
m68k_op_or_16_er_i(void)1785 void m68k_op_or_16_er_i(void)
1786 {
1787 	uint res = MASK_OUT_ABOVE_16((DX |= OPER_I_16()));
1788 
1789 	FLAG_N = NFLAG_16(res);
1790 	FLAG_Z = res;
1791 	FLAG_C = CFLAG_CLEAR;
1792 	FLAG_V = VFLAG_CLEAR;
1793 }
1794 
1795 
m68k_op_or_32_er_d(void)1796 void m68k_op_or_32_er_d(void)
1797 {
1798 	uint res = DX |= DY;
1799 
1800 	FLAG_N = NFLAG_32(res);
1801 	FLAG_Z = res;
1802 	FLAG_C = CFLAG_CLEAR;
1803 	FLAG_V = VFLAG_CLEAR;
1804 }
1805 
1806 
m68k_op_or_32_er_ai(void)1807 void m68k_op_or_32_er_ai(void)
1808 {
1809 	uint res = DX |= OPER_AY_AI_32();
1810 
1811 	FLAG_N = NFLAG_32(res);
1812 	FLAG_Z = res;
1813 	FLAG_C = CFLAG_CLEAR;
1814 	FLAG_V = VFLAG_CLEAR;
1815 }
1816 
1817 
m68k_op_or_32_er_pi(void)1818 void m68k_op_or_32_er_pi(void)
1819 {
1820 	uint res = DX |= OPER_AY_PI_32();
1821 
1822 	FLAG_N = NFLAG_32(res);
1823 	FLAG_Z = res;
1824 	FLAG_C = CFLAG_CLEAR;
1825 	FLAG_V = VFLAG_CLEAR;
1826 }
1827 
1828 
m68k_op_or_32_er_pd(void)1829 void m68k_op_or_32_er_pd(void)
1830 {
1831 	uint res = DX |= OPER_AY_PD_32();
1832 
1833 	FLAG_N = NFLAG_32(res);
1834 	FLAG_Z = res;
1835 	FLAG_C = CFLAG_CLEAR;
1836 	FLAG_V = VFLAG_CLEAR;
1837 }
1838 
1839 
m68k_op_or_32_er_di(void)1840 void m68k_op_or_32_er_di(void)
1841 {
1842 	uint res = DX |= OPER_AY_DI_32();
1843 
1844 	FLAG_N = NFLAG_32(res);
1845 	FLAG_Z = res;
1846 	FLAG_C = CFLAG_CLEAR;
1847 	FLAG_V = VFLAG_CLEAR;
1848 }
1849 
1850 
m68k_op_or_32_er_ix(void)1851 void m68k_op_or_32_er_ix(void)
1852 {
1853 	uint res = DX |= OPER_AY_IX_32();
1854 
1855 	FLAG_N = NFLAG_32(res);
1856 	FLAG_Z = res;
1857 	FLAG_C = CFLAG_CLEAR;
1858 	FLAG_V = VFLAG_CLEAR;
1859 }
1860 
1861 
m68k_op_or_32_er_aw(void)1862 void m68k_op_or_32_er_aw(void)
1863 {
1864 	uint res = DX |= OPER_AW_32();
1865 
1866 	FLAG_N = NFLAG_32(res);
1867 	FLAG_Z = res;
1868 	FLAG_C = CFLAG_CLEAR;
1869 	FLAG_V = VFLAG_CLEAR;
1870 }
1871 
1872 
m68k_op_or_32_er_al(void)1873 void m68k_op_or_32_er_al(void)
1874 {
1875 	uint res = DX |= OPER_AL_32();
1876 
1877 	FLAG_N = NFLAG_32(res);
1878 	FLAG_Z = res;
1879 	FLAG_C = CFLAG_CLEAR;
1880 	FLAG_V = VFLAG_CLEAR;
1881 }
1882 
1883 
m68k_op_or_32_er_pcdi(void)1884 void m68k_op_or_32_er_pcdi(void)
1885 {
1886 	uint res = DX |= OPER_PCDI_32();
1887 
1888 	FLAG_N = NFLAG_32(res);
1889 	FLAG_Z = res;
1890 	FLAG_C = CFLAG_CLEAR;
1891 	FLAG_V = VFLAG_CLEAR;
1892 }
1893 
1894 
m68k_op_or_32_er_pcix(void)1895 void m68k_op_or_32_er_pcix(void)
1896 {
1897 	uint res = DX |= OPER_PCIX_32();
1898 
1899 	FLAG_N = NFLAG_32(res);
1900 	FLAG_Z = res;
1901 	FLAG_C = CFLAG_CLEAR;
1902 	FLAG_V = VFLAG_CLEAR;
1903 }
1904 
1905 
m68k_op_or_32_er_i(void)1906 void m68k_op_or_32_er_i(void)
1907 {
1908 	uint res = DX |= OPER_I_32();
1909 
1910 	FLAG_N = NFLAG_32(res);
1911 	FLAG_Z = res;
1912 	FLAG_C = CFLAG_CLEAR;
1913 	FLAG_V = VFLAG_CLEAR;
1914 }
1915 
1916 
m68k_op_or_8_re_ai(void)1917 void m68k_op_or_8_re_ai(void)
1918 {
1919 	uint ea = EA_AY_AI_8();
1920 	uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1921 
1922 	m68ki_write_8(ea, res);
1923 
1924 	FLAG_N = NFLAG_8(res);
1925 	FLAG_Z = res;
1926 	FLAG_C = CFLAG_CLEAR;
1927 	FLAG_V = VFLAG_CLEAR;
1928 }
1929 
1930 
m68k_op_or_8_re_pi(void)1931 void m68k_op_or_8_re_pi(void)
1932 {
1933 	uint ea = EA_AY_PI_8();
1934 	uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1935 
1936 	m68ki_write_8(ea, res);
1937 
1938 	FLAG_N = NFLAG_8(res);
1939 	FLAG_Z = res;
1940 	FLAG_C = CFLAG_CLEAR;
1941 	FLAG_V = VFLAG_CLEAR;
1942 }
1943 
1944 
m68k_op_or_8_re_pi7(void)1945 void m68k_op_or_8_re_pi7(void)
1946 {
1947 	uint ea = EA_A7_PI_8();
1948 	uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1949 
1950 	m68ki_write_8(ea, res);
1951 
1952 	FLAG_N = NFLAG_8(res);
1953 	FLAG_Z = res;
1954 	FLAG_C = CFLAG_CLEAR;
1955 	FLAG_V = VFLAG_CLEAR;
1956 }
1957 
1958 
m68k_op_or_8_re_pd(void)1959 void m68k_op_or_8_re_pd(void)
1960 {
1961 	uint ea = EA_AY_PD_8();
1962 	uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1963 
1964 	m68ki_write_8(ea, res);
1965 
1966 	FLAG_N = NFLAG_8(res);
1967 	FLAG_Z = res;
1968 	FLAG_C = CFLAG_CLEAR;
1969 	FLAG_V = VFLAG_CLEAR;
1970 }
1971 
1972 
m68k_op_or_8_re_pd7(void)1973 void m68k_op_or_8_re_pd7(void)
1974 {
1975 	uint ea = EA_A7_PD_8();
1976 	uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1977 
1978 	m68ki_write_8(ea, res);
1979 
1980 	FLAG_N = NFLAG_8(res);
1981 	FLAG_Z = res;
1982 	FLAG_C = CFLAG_CLEAR;
1983 	FLAG_V = VFLAG_CLEAR;
1984 }
1985 
1986 
m68k_op_or_8_re_di(void)1987 void m68k_op_or_8_re_di(void)
1988 {
1989 	uint ea = EA_AY_DI_8();
1990 	uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
1991 
1992 	m68ki_write_8(ea, res);
1993 
1994 	FLAG_N = NFLAG_8(res);
1995 	FLAG_Z = res;
1996 	FLAG_C = CFLAG_CLEAR;
1997 	FLAG_V = VFLAG_CLEAR;
1998 }
1999 
2000 
m68k_op_or_8_re_ix(void)2001 void m68k_op_or_8_re_ix(void)
2002 {
2003 	uint ea = EA_AY_IX_8();
2004 	uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
2005 
2006 	m68ki_write_8(ea, res);
2007 
2008 	FLAG_N = NFLAG_8(res);
2009 	FLAG_Z = res;
2010 	FLAG_C = CFLAG_CLEAR;
2011 	FLAG_V = VFLAG_CLEAR;
2012 }
2013 
2014 
m68k_op_or_8_re_aw(void)2015 void m68k_op_or_8_re_aw(void)
2016 {
2017 	uint ea = EA_AW_8();
2018 	uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
2019 
2020 	m68ki_write_8(ea, res);
2021 
2022 	FLAG_N = NFLAG_8(res);
2023 	FLAG_Z = res;
2024 	FLAG_C = CFLAG_CLEAR;
2025 	FLAG_V = VFLAG_CLEAR;
2026 }
2027 
2028 
m68k_op_or_8_re_al(void)2029 void m68k_op_or_8_re_al(void)
2030 {
2031 	uint ea = EA_AL_8();
2032 	uint res = MASK_OUT_ABOVE_8(DX | m68ki_read_8(ea));
2033 
2034 	m68ki_write_8(ea, res);
2035 
2036 	FLAG_N = NFLAG_8(res);
2037 	FLAG_Z = res;
2038 	FLAG_C = CFLAG_CLEAR;
2039 	FLAG_V = VFLAG_CLEAR;
2040 }
2041 
2042 
m68k_op_or_16_re_ai(void)2043 void m68k_op_or_16_re_ai(void)
2044 {
2045 	uint ea = EA_AY_AI_16();
2046 	uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2047 
2048 	m68ki_write_16(ea, res);
2049 
2050 	FLAG_N = NFLAG_16(res);
2051 	FLAG_Z = res;
2052 	FLAG_C = CFLAG_CLEAR;
2053 	FLAG_V = VFLAG_CLEAR;
2054 }
2055 
2056 
m68k_op_or_16_re_pi(void)2057 void m68k_op_or_16_re_pi(void)
2058 {
2059 	uint ea = EA_AY_PI_16();
2060 	uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2061 
2062 	m68ki_write_16(ea, res);
2063 
2064 	FLAG_N = NFLAG_16(res);
2065 	FLAG_Z = res;
2066 	FLAG_C = CFLAG_CLEAR;
2067 	FLAG_V = VFLAG_CLEAR;
2068 }
2069 
2070 
m68k_op_or_16_re_pd(void)2071 void m68k_op_or_16_re_pd(void)
2072 {
2073 	uint ea = EA_AY_PD_16();
2074 	uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2075 
2076 	m68ki_write_16(ea, res);
2077 
2078 	FLAG_N = NFLAG_16(res);
2079 	FLAG_Z = res;
2080 	FLAG_C = CFLAG_CLEAR;
2081 	FLAG_V = VFLAG_CLEAR;
2082 }
2083 
2084 
m68k_op_or_16_re_di(void)2085 void m68k_op_or_16_re_di(void)
2086 {
2087 	uint ea = EA_AY_DI_16();
2088 	uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2089 
2090 	m68ki_write_16(ea, res);
2091 
2092 	FLAG_N = NFLAG_16(res);
2093 	FLAG_Z = res;
2094 	FLAG_C = CFLAG_CLEAR;
2095 	FLAG_V = VFLAG_CLEAR;
2096 }
2097 
2098 
m68k_op_or_16_re_ix(void)2099 void m68k_op_or_16_re_ix(void)
2100 {
2101 	uint ea = EA_AY_IX_16();
2102 	uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2103 
2104 	m68ki_write_16(ea, res);
2105 
2106 	FLAG_N = NFLAG_16(res);
2107 	FLAG_Z = res;
2108 	FLAG_C = CFLAG_CLEAR;
2109 	FLAG_V = VFLAG_CLEAR;
2110 }
2111 
2112 
m68k_op_or_16_re_aw(void)2113 void m68k_op_or_16_re_aw(void)
2114 {
2115 	uint ea = EA_AW_16();
2116 	uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2117 
2118 	m68ki_write_16(ea, res);
2119 
2120 	FLAG_N = NFLAG_16(res);
2121 	FLAG_Z = res;
2122 	FLAG_C = CFLAG_CLEAR;
2123 	FLAG_V = VFLAG_CLEAR;
2124 }
2125 
2126 
m68k_op_or_16_re_al(void)2127 void m68k_op_or_16_re_al(void)
2128 {
2129 	uint ea = EA_AL_16();
2130 	uint res = MASK_OUT_ABOVE_16(DX | m68ki_read_16(ea));
2131 
2132 	m68ki_write_16(ea, res);
2133 
2134 	FLAG_N = NFLAG_16(res);
2135 	FLAG_Z = res;
2136 	FLAG_C = CFLAG_CLEAR;
2137 	FLAG_V = VFLAG_CLEAR;
2138 }
2139 
2140 
m68k_op_or_32_re_ai(void)2141 void m68k_op_or_32_re_ai(void)
2142 {
2143 	uint ea = EA_AY_AI_32();
2144 	uint res = DX | m68ki_read_32(ea);
2145 
2146 	m68ki_write_32(ea, res);
2147 
2148 	FLAG_N = NFLAG_32(res);
2149 	FLAG_Z = res;
2150 	FLAG_C = CFLAG_CLEAR;
2151 	FLAG_V = VFLAG_CLEAR;
2152 }
2153 
2154 
m68k_op_or_32_re_pi(void)2155 void m68k_op_or_32_re_pi(void)
2156 {
2157 	uint ea = EA_AY_PI_32();
2158 	uint res = DX | m68ki_read_32(ea);
2159 
2160 	m68ki_write_32(ea, res);
2161 
2162 	FLAG_N = NFLAG_32(res);
2163 	FLAG_Z = res;
2164 	FLAG_C = CFLAG_CLEAR;
2165 	FLAG_V = VFLAG_CLEAR;
2166 }
2167 
2168 
m68k_op_or_32_re_pd(void)2169 void m68k_op_or_32_re_pd(void)
2170 {
2171 	uint ea = EA_AY_PD_32();
2172 	uint res = DX | m68ki_read_32(ea);
2173 
2174 	m68ki_write_32(ea, res);
2175 
2176 	FLAG_N = NFLAG_32(res);
2177 	FLAG_Z = res;
2178 	FLAG_C = CFLAG_CLEAR;
2179 	FLAG_V = VFLAG_CLEAR;
2180 }
2181 
2182 
m68k_op_or_32_re_di(void)2183 void m68k_op_or_32_re_di(void)
2184 {
2185 	uint ea = EA_AY_DI_32();
2186 	uint res = DX | m68ki_read_32(ea);
2187 
2188 	m68ki_write_32(ea, res);
2189 
2190 	FLAG_N = NFLAG_32(res);
2191 	FLAG_Z = res;
2192 	FLAG_C = CFLAG_CLEAR;
2193 	FLAG_V = VFLAG_CLEAR;
2194 }
2195 
2196 
m68k_op_or_32_re_ix(void)2197 void m68k_op_or_32_re_ix(void)
2198 {
2199 	uint ea = EA_AY_IX_32();
2200 	uint res = DX | m68ki_read_32(ea);
2201 
2202 	m68ki_write_32(ea, res);
2203 
2204 	FLAG_N = NFLAG_32(res);
2205 	FLAG_Z = res;
2206 	FLAG_C = CFLAG_CLEAR;
2207 	FLAG_V = VFLAG_CLEAR;
2208 }
2209 
2210 
m68k_op_or_32_re_aw(void)2211 void m68k_op_or_32_re_aw(void)
2212 {
2213 	uint ea = EA_AW_32();
2214 	uint res = DX | m68ki_read_32(ea);
2215 
2216 	m68ki_write_32(ea, res);
2217 
2218 	FLAG_N = NFLAG_32(res);
2219 	FLAG_Z = res;
2220 	FLAG_C = CFLAG_CLEAR;
2221 	FLAG_V = VFLAG_CLEAR;
2222 }
2223 
2224 
m68k_op_or_32_re_al(void)2225 void m68k_op_or_32_re_al(void)
2226 {
2227 	uint ea = EA_AL_32();
2228 	uint res = DX | m68ki_read_32(ea);
2229 
2230 	m68ki_write_32(ea, res);
2231 
2232 	FLAG_N = NFLAG_32(res);
2233 	FLAG_Z = res;
2234 	FLAG_C = CFLAG_CLEAR;
2235 	FLAG_V = VFLAG_CLEAR;
2236 }
2237 
2238 
m68k_op_ori_8_d(void)2239 void m68k_op_ori_8_d(void)
2240 {
2241 	uint res = MASK_OUT_ABOVE_8((DY |= OPER_I_8()));
2242 
2243 	FLAG_N = NFLAG_8(res);
2244 	FLAG_Z = res;
2245 	FLAG_C = CFLAG_CLEAR;
2246 	FLAG_V = VFLAG_CLEAR;
2247 }
2248 
2249 
m68k_op_ori_8_ai(void)2250 void m68k_op_ori_8_ai(void)
2251 {
2252 	uint src = OPER_I_8();
2253 	uint ea = EA_AY_AI_8();
2254 	uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2255 
2256 	m68ki_write_8(ea, res);
2257 
2258 	FLAG_N = NFLAG_8(res);
2259 	FLAG_Z = res;
2260 	FLAG_C = CFLAG_CLEAR;
2261 	FLAG_V = VFLAG_CLEAR;
2262 }
2263 
2264 
m68k_op_ori_8_pi(void)2265 void m68k_op_ori_8_pi(void)
2266 {
2267 	uint src = OPER_I_8();
2268 	uint ea = EA_AY_PI_8();
2269 	uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2270 
2271 	m68ki_write_8(ea, res);
2272 
2273 	FLAG_N = NFLAG_8(res);
2274 	FLAG_Z = res;
2275 	FLAG_C = CFLAG_CLEAR;
2276 	FLAG_V = VFLAG_CLEAR;
2277 }
2278 
2279 
m68k_op_ori_8_pi7(void)2280 void m68k_op_ori_8_pi7(void)
2281 {
2282 	uint src = OPER_I_8();
2283 	uint ea = EA_A7_PI_8();
2284 	uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2285 
2286 	m68ki_write_8(ea, res);
2287 
2288 	FLAG_N = NFLAG_8(res);
2289 	FLAG_Z = res;
2290 	FLAG_C = CFLAG_CLEAR;
2291 	FLAG_V = VFLAG_CLEAR;
2292 }
2293 
2294 
m68k_op_ori_8_pd(void)2295 void m68k_op_ori_8_pd(void)
2296 {
2297 	uint src = OPER_I_8();
2298 	uint ea = EA_AY_PD_8();
2299 	uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2300 
2301 	m68ki_write_8(ea, res);
2302 
2303 	FLAG_N = NFLAG_8(res);
2304 	FLAG_Z = res;
2305 	FLAG_C = CFLAG_CLEAR;
2306 	FLAG_V = VFLAG_CLEAR;
2307 }
2308 
2309 
m68k_op_ori_8_pd7(void)2310 void m68k_op_ori_8_pd7(void)
2311 {
2312 	uint src = OPER_I_8();
2313 	uint ea = EA_A7_PD_8();
2314 	uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2315 
2316 	m68ki_write_8(ea, res);
2317 
2318 	FLAG_N = NFLAG_8(res);
2319 	FLAG_Z = res;
2320 	FLAG_C = CFLAG_CLEAR;
2321 	FLAG_V = VFLAG_CLEAR;
2322 }
2323 
2324 
m68k_op_ori_8_di(void)2325 void m68k_op_ori_8_di(void)
2326 {
2327 	uint src = OPER_I_8();
2328 	uint ea = EA_AY_DI_8();
2329 	uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2330 
2331 	m68ki_write_8(ea, res);
2332 
2333 	FLAG_N = NFLAG_8(res);
2334 	FLAG_Z = res;
2335 	FLAG_C = CFLAG_CLEAR;
2336 	FLAG_V = VFLAG_CLEAR;
2337 }
2338 
2339 
m68k_op_ori_8_ix(void)2340 void m68k_op_ori_8_ix(void)
2341 {
2342 	uint src = OPER_I_8();
2343 	uint ea = EA_AY_IX_8();
2344 	uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2345 
2346 	m68ki_write_8(ea, res);
2347 
2348 	FLAG_N = NFLAG_8(res);
2349 	FLAG_Z = res;
2350 	FLAG_C = CFLAG_CLEAR;
2351 	FLAG_V = VFLAG_CLEAR;
2352 }
2353 
2354 
m68k_op_ori_8_aw(void)2355 void m68k_op_ori_8_aw(void)
2356 {
2357 	uint src = OPER_I_8();
2358 	uint ea = EA_AW_8();
2359 	uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2360 
2361 	m68ki_write_8(ea, res);
2362 
2363 	FLAG_N = NFLAG_8(res);
2364 	FLAG_Z = res;
2365 	FLAG_C = CFLAG_CLEAR;
2366 	FLAG_V = VFLAG_CLEAR;
2367 }
2368 
2369 
m68k_op_ori_8_al(void)2370 void m68k_op_ori_8_al(void)
2371 {
2372 	uint src = OPER_I_8();
2373 	uint ea = EA_AL_8();
2374 	uint res = MASK_OUT_ABOVE_8(src | m68ki_read_8(ea));
2375 
2376 	m68ki_write_8(ea, res);
2377 
2378 	FLAG_N = NFLAG_8(res);
2379 	FLAG_Z = res;
2380 	FLAG_C = CFLAG_CLEAR;
2381 	FLAG_V = VFLAG_CLEAR;
2382 }
2383 
2384 
m68k_op_ori_16_d(void)2385 void m68k_op_ori_16_d(void)
2386 {
2387 	uint res = MASK_OUT_ABOVE_16(DY |= OPER_I_16());
2388 
2389 	FLAG_N = NFLAG_16(res);
2390 	FLAG_Z = res;
2391 	FLAG_C = CFLAG_CLEAR;
2392 	FLAG_V = VFLAG_CLEAR;
2393 }
2394 
2395 
m68k_op_ori_16_ai(void)2396 void m68k_op_ori_16_ai(void)
2397 {
2398 	uint src = OPER_I_16();
2399 	uint ea = EA_AY_AI_16();
2400 	uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2401 
2402 	m68ki_write_16(ea, res);
2403 
2404 	FLAG_N = NFLAG_16(res);
2405 	FLAG_Z = res;
2406 	FLAG_C = CFLAG_CLEAR;
2407 	FLAG_V = VFLAG_CLEAR;
2408 }
2409 
2410 
m68k_op_ori_16_pi(void)2411 void m68k_op_ori_16_pi(void)
2412 {
2413 	uint src = OPER_I_16();
2414 	uint ea = EA_AY_PI_16();
2415 	uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2416 
2417 	m68ki_write_16(ea, res);
2418 
2419 	FLAG_N = NFLAG_16(res);
2420 	FLAG_Z = res;
2421 	FLAG_C = CFLAG_CLEAR;
2422 	FLAG_V = VFLAG_CLEAR;
2423 }
2424 
2425 
m68k_op_ori_16_pd(void)2426 void m68k_op_ori_16_pd(void)
2427 {
2428 	uint src = OPER_I_16();
2429 	uint ea = EA_AY_PD_16();
2430 	uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2431 
2432 	m68ki_write_16(ea, res);
2433 
2434 	FLAG_N = NFLAG_16(res);
2435 	FLAG_Z = res;
2436 	FLAG_C = CFLAG_CLEAR;
2437 	FLAG_V = VFLAG_CLEAR;
2438 }
2439 
2440 
m68k_op_ori_16_di(void)2441 void m68k_op_ori_16_di(void)
2442 {
2443 	uint src = OPER_I_16();
2444 	uint ea = EA_AY_DI_16();
2445 	uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2446 
2447 	m68ki_write_16(ea, res);
2448 
2449 	FLAG_N = NFLAG_16(res);
2450 	FLAG_Z = res;
2451 	FLAG_C = CFLAG_CLEAR;
2452 	FLAG_V = VFLAG_CLEAR;
2453 }
2454 
2455 
m68k_op_ori_16_ix(void)2456 void m68k_op_ori_16_ix(void)
2457 {
2458 	uint src = OPER_I_16();
2459 	uint ea = EA_AY_IX_16();
2460 	uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2461 
2462 	m68ki_write_16(ea, res);
2463 
2464 	FLAG_N = NFLAG_16(res);
2465 	FLAG_Z = res;
2466 	FLAG_C = CFLAG_CLEAR;
2467 	FLAG_V = VFLAG_CLEAR;
2468 }
2469 
2470 
m68k_op_ori_16_aw(void)2471 void m68k_op_ori_16_aw(void)
2472 {
2473 	uint src = OPER_I_16();
2474 	uint ea = EA_AW_16();
2475 	uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2476 
2477 	m68ki_write_16(ea, res);
2478 
2479 	FLAG_N = NFLAG_16(res);
2480 	FLAG_Z = res;
2481 	FLAG_C = CFLAG_CLEAR;
2482 	FLAG_V = VFLAG_CLEAR;
2483 }
2484 
2485 
m68k_op_ori_16_al(void)2486 void m68k_op_ori_16_al(void)
2487 {
2488 	uint src = OPER_I_16();
2489 	uint ea = EA_AL_16();
2490 	uint res = MASK_OUT_ABOVE_16(src | m68ki_read_16(ea));
2491 
2492 	m68ki_write_16(ea, res);
2493 
2494 	FLAG_N = NFLAG_16(res);
2495 	FLAG_Z = res;
2496 	FLAG_C = CFLAG_CLEAR;
2497 	FLAG_V = VFLAG_CLEAR;
2498 }
2499 
2500 
m68k_op_ori_32_d(void)2501 void m68k_op_ori_32_d(void)
2502 {
2503 	uint res = DY |= OPER_I_32();
2504 
2505 	FLAG_N = NFLAG_32(res);
2506 	FLAG_Z = res;
2507 	FLAG_C = CFLAG_CLEAR;
2508 	FLAG_V = VFLAG_CLEAR;
2509 }
2510 
2511 
m68k_op_ori_32_ai(void)2512 void m68k_op_ori_32_ai(void)
2513 {
2514 	uint src = OPER_I_32();
2515 	uint ea = EA_AY_AI_32();
2516 	uint res = src | m68ki_read_32(ea);
2517 
2518 	m68ki_write_32(ea, res);
2519 
2520 	FLAG_N = NFLAG_32(res);
2521 	FLAG_Z = res;
2522 	FLAG_C = CFLAG_CLEAR;
2523 	FLAG_V = VFLAG_CLEAR;
2524 }
2525 
2526 
m68k_op_ori_32_pi(void)2527 void m68k_op_ori_32_pi(void)
2528 {
2529 	uint src = OPER_I_32();
2530 	uint ea = EA_AY_PI_32();
2531 	uint res = src | m68ki_read_32(ea);
2532 
2533 	m68ki_write_32(ea, res);
2534 
2535 	FLAG_N = NFLAG_32(res);
2536 	FLAG_Z = res;
2537 	FLAG_C = CFLAG_CLEAR;
2538 	FLAG_V = VFLAG_CLEAR;
2539 }
2540 
2541 
m68k_op_ori_32_pd(void)2542 void m68k_op_ori_32_pd(void)
2543 {
2544 	uint src = OPER_I_32();
2545 	uint ea = EA_AY_PD_32();
2546 	uint res = src | m68ki_read_32(ea);
2547 
2548 	m68ki_write_32(ea, res);
2549 
2550 	FLAG_N = NFLAG_32(res);
2551 	FLAG_Z = res;
2552 	FLAG_C = CFLAG_CLEAR;
2553 	FLAG_V = VFLAG_CLEAR;
2554 }
2555 
2556 
m68k_op_ori_32_di(void)2557 void m68k_op_ori_32_di(void)
2558 {
2559 	uint src = OPER_I_32();
2560 	uint ea = EA_AY_DI_32();
2561 	uint res = src | m68ki_read_32(ea);
2562 
2563 	m68ki_write_32(ea, res);
2564 
2565 	FLAG_N = NFLAG_32(res);
2566 	FLAG_Z = res;
2567 	FLAG_C = CFLAG_CLEAR;
2568 	FLAG_V = VFLAG_CLEAR;
2569 }
2570 
2571 
m68k_op_ori_32_ix(void)2572 void m68k_op_ori_32_ix(void)
2573 {
2574 	uint src = OPER_I_32();
2575 	uint ea = EA_AY_IX_32();
2576 	uint res = src | m68ki_read_32(ea);
2577 
2578 	m68ki_write_32(ea, res);
2579 
2580 	FLAG_N = NFLAG_32(res);
2581 	FLAG_Z = res;
2582 	FLAG_C = CFLAG_CLEAR;
2583 	FLAG_V = VFLAG_CLEAR;
2584 }
2585 
2586 
m68k_op_ori_32_aw(void)2587 void m68k_op_ori_32_aw(void)
2588 {
2589 	uint src = OPER_I_32();
2590 	uint ea = EA_AW_32();
2591 	uint res = src | m68ki_read_32(ea);
2592 
2593 	m68ki_write_32(ea, res);
2594 
2595 	FLAG_N = NFLAG_32(res);
2596 	FLAG_Z = res;
2597 	FLAG_C = CFLAG_CLEAR;
2598 	FLAG_V = VFLAG_CLEAR;
2599 }
2600 
2601 
m68k_op_ori_32_al(void)2602 void m68k_op_ori_32_al(void)
2603 {
2604 	uint src = OPER_I_32();
2605 	uint ea = EA_AL_32();
2606 	uint res = src | m68ki_read_32(ea);
2607 
2608 	m68ki_write_32(ea, res);
2609 
2610 	FLAG_N = NFLAG_32(res);
2611 	FLAG_Z = res;
2612 	FLAG_C = CFLAG_CLEAR;
2613 	FLAG_V = VFLAG_CLEAR;
2614 }
2615 
2616 
m68k_op_ori_16_toc(void)2617 void m68k_op_ori_16_toc(void)
2618 {
2619 	m68ki_set_ccr(m68ki_get_ccr() | OPER_I_16());
2620 }
2621 
2622 
m68k_op_ori_16_tos(void)2623 void m68k_op_ori_16_tos(void)
2624 {
2625 	if(FLAG_S)
2626 	{
2627 		uint src = OPER_I_16();
2628 		m68ki_trace_t0();			   /* auto-disable (see m68kcpu.h) */
2629 		m68ki_set_sr(m68ki_get_sr() | src);
2630 		return;
2631 	}
2632 	m68ki_exception_privilege_violation();
2633 }
2634 
2635 
m68k_op_pack_16_rr(void)2636 void m68k_op_pack_16_rr(void)
2637 {
2638 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
2639 	{
2640 		/* Note: DX and DY are reversed in Motorola's docs */
2641 		uint src = DY + OPER_I_16();
2642 		uint* r_dst = &DX;
2643 
2644 		*r_dst = MASK_OUT_BELOW_8(*r_dst) | ((src >> 4) & 0x00f0) | (src & 0x000f);
2645 		return;
2646 	}
2647 	m68ki_exception_illegal();
2648 }
2649 
2650 
m68k_op_pack_16_mm_ax7(void)2651 void m68k_op_pack_16_mm_ax7(void)
2652 {
2653 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
2654 	{
2655 		/* Note: AX and AY are reversed in Motorola's docs */
2656 		uint ea_src = EA_AY_PD_8();
2657 		uint src = m68ki_read_8(ea_src);
2658 		ea_src = EA_AY_PD_8();
2659 		src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
2660 
2661 		m68ki_write_8(EA_A7_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
2662 		return;
2663 	}
2664 	m68ki_exception_illegal();
2665 }
2666 
2667 
m68k_op_pack_16_mm_ay7(void)2668 void m68k_op_pack_16_mm_ay7(void)
2669 {
2670 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
2671 	{
2672 		/* Note: AX and AY are reversed in Motorola's docs */
2673 		uint ea_src = EA_A7_PD_8();
2674 		uint src = m68ki_read_8(ea_src);
2675 		ea_src = EA_A7_PD_8();
2676 		src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
2677 
2678 		m68ki_write_8(EA_AX_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
2679 		return;
2680 	}
2681 	m68ki_exception_illegal();
2682 }
2683 
2684 
m68k_op_pack_16_mm_axy7(void)2685 void m68k_op_pack_16_mm_axy7(void)
2686 {
2687 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
2688 	{
2689 		uint ea_src = EA_A7_PD_8();
2690 		uint src = m68ki_read_8(ea_src);
2691 		ea_src = EA_A7_PD_8();
2692 		src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
2693 
2694 		m68ki_write_8(EA_A7_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
2695 		return;
2696 	}
2697 	m68ki_exception_illegal();
2698 }
2699 
2700 
m68k_op_pack_16_mm(void)2701 void m68k_op_pack_16_mm(void)
2702 {
2703 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
2704 	{
2705 		/* Note: AX and AY are reversed in Motorola's docs */
2706 		uint ea_src = EA_AY_PD_8();
2707 		uint src = m68ki_read_8(ea_src);
2708 		ea_src = EA_AY_PD_8();
2709 		src = ((src << 8) | m68ki_read_8(ea_src)) + OPER_I_16();
2710 
2711 		m68ki_write_8(EA_AX_PD_8(), ((src >> 4) & 0x00f0) | (src & 0x000f));
2712 		return;
2713 	}
2714 	m68ki_exception_illegal();
2715 }
2716 
2717 
m68k_op_pea_32_ai(void)2718 void m68k_op_pea_32_ai(void)
2719 {
2720 	uint ea = EA_AY_AI_32();
2721 
2722 	m68ki_push_32(ea);
2723 }
2724 
2725 
m68k_op_pea_32_di(void)2726 void m68k_op_pea_32_di(void)
2727 {
2728 	uint ea = EA_AY_DI_32();
2729 
2730 	m68ki_push_32(ea);
2731 }
2732 
2733 
m68k_op_pea_32_ix(void)2734 void m68k_op_pea_32_ix(void)
2735 {
2736 	uint ea = EA_AY_IX_32();
2737 
2738 	m68ki_push_32(ea);
2739 }
2740 
2741 
m68k_op_pea_32_aw(void)2742 void m68k_op_pea_32_aw(void)
2743 {
2744 	uint ea = EA_AW_32();
2745 
2746 	m68ki_push_32(ea);
2747 }
2748 
2749 
m68k_op_pea_32_al(void)2750 void m68k_op_pea_32_al(void)
2751 {
2752 	uint ea = EA_AL_32();
2753 
2754 	m68ki_push_32(ea);
2755 }
2756 
2757 
m68k_op_pea_32_pcdi(void)2758 void m68k_op_pea_32_pcdi(void)
2759 {
2760 	uint ea = EA_PCDI_32();
2761 
2762 	m68ki_push_32(ea);
2763 }
2764 
2765 
m68k_op_pea_32_pcix(void)2766 void m68k_op_pea_32_pcix(void)
2767 {
2768 	uint ea = EA_PCIX_32();
2769 
2770 	m68ki_push_32(ea);
2771 }
2772 
2773 
m68k_op_reset(void)2774 void m68k_op_reset(void)
2775 {
2776 	if(FLAG_S)
2777 	{
2778 		m68ki_output_reset();		   /* auto-disable (see m68kcpu.h) */
2779 		USE_CYCLES(CYC_RESET);
2780 		return;
2781 	}
2782 	m68ki_exception_privilege_violation();
2783 }
2784 
2785 
m68k_op_ror_8_s(void)2786 void m68k_op_ror_8_s(void)
2787 {
2788 	uint* r_dst = &DY;
2789 	uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1;
2790 	uint shift = orig_shift & 7;
2791 	uint src = MASK_OUT_ABOVE_8(*r_dst);
2792 	uint res = ROR_8(src, shift);
2793 
2794 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
2795 
2796 	FLAG_N = NFLAG_8(res);
2797 	FLAG_Z = res;
2798 	FLAG_C = src << (9-orig_shift);
2799 	FLAG_V = VFLAG_CLEAR;
2800 }
2801 
2802 
m68k_op_ror_16_s(void)2803 void m68k_op_ror_16_s(void)
2804 {
2805 	uint* r_dst = &DY;
2806 	uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
2807 	uint src = MASK_OUT_ABOVE_16(*r_dst);
2808 	uint res = ROR_16(src, shift);
2809 
2810 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
2811 
2812 	FLAG_N = NFLAG_16(res);
2813 	FLAG_Z = res;
2814 	FLAG_C = src << (9-shift);
2815 	FLAG_V = VFLAG_CLEAR;
2816 }
2817 
2818 
m68k_op_ror_32_s(void)2819 void m68k_op_ror_32_s(void)
2820 {
2821 	uint* r_dst = &DY;
2822 	uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
2823 	uint64 src = *r_dst;
2824 	uint res = ROR_32(src, shift);
2825 
2826 	*r_dst = res;
2827 
2828 	FLAG_N = NFLAG_32(res);
2829 	FLAG_Z = res;
2830 	FLAG_C = src << (9-shift);
2831 	FLAG_V = VFLAG_CLEAR;
2832 }
2833 
2834 
m68k_op_ror_8_r(void)2835 void m68k_op_ror_8_r(void)
2836 {
2837 	uint* r_dst = &DY;
2838 	uint orig_shift = DX & 0x3f;
2839 	uint shift = orig_shift & 7;
2840 	uint src = MASK_OUT_ABOVE_8(*r_dst);
2841 	uint res = ROR_8(src, shift);
2842 
2843 	if(orig_shift != 0)
2844 	{
2845 		USE_CYCLES(orig_shift<<CYC_SHIFT);
2846 
2847 		*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
2848 		FLAG_C = src << (8-((shift-1)&7));
2849 		FLAG_N = NFLAG_8(res);
2850 		FLAG_Z = res;
2851 		FLAG_V = VFLAG_CLEAR;
2852 		return;
2853 	}
2854 
2855 	FLAG_C = CFLAG_CLEAR;
2856 	FLAG_N = NFLAG_8(src);
2857 	FLAG_Z = src;
2858 	FLAG_V = VFLAG_CLEAR;
2859 }
2860 
2861 
m68k_op_ror_16_r(void)2862 void m68k_op_ror_16_r(void)
2863 {
2864 	uint* r_dst = &DY;
2865 	uint orig_shift = DX & 0x3f;
2866 	uint shift = orig_shift & 15;
2867 	uint src = MASK_OUT_ABOVE_16(*r_dst);
2868 	uint res = ROR_16(src, shift);
2869 
2870 	if(orig_shift != 0)
2871 	{
2872 		USE_CYCLES(orig_shift<<CYC_SHIFT);
2873 
2874 		*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
2875 		FLAG_C = (src >> ((shift - 1) & 15)) << 8;
2876 		FLAG_N = NFLAG_16(res);
2877 		FLAG_Z = res;
2878 		FLAG_V = VFLAG_CLEAR;
2879 		return;
2880 	}
2881 
2882 	FLAG_C = CFLAG_CLEAR;
2883 	FLAG_N = NFLAG_16(src);
2884 	FLAG_Z = src;
2885 	FLAG_V = VFLAG_CLEAR;
2886 }
2887 
2888 
m68k_op_ror_32_r(void)2889 void m68k_op_ror_32_r(void)
2890 {
2891 	uint* r_dst = &DY;
2892 	uint orig_shift = DX & 0x3f;
2893 	uint shift = orig_shift & 31;
2894 	uint64 src = *r_dst;
2895 	uint res = ROR_32(src, shift);
2896 
2897 	if(orig_shift != 0)
2898 	{
2899 		USE_CYCLES(orig_shift<<CYC_SHIFT);
2900 
2901 		*r_dst = res;
2902 		FLAG_C = (src >> ((shift - 1) & 31)) << 8;
2903 		FLAG_N = NFLAG_32(res);
2904 		FLAG_Z = res;
2905 		FLAG_V = VFLAG_CLEAR;
2906 		return;
2907 	}
2908 
2909 	FLAG_C = CFLAG_CLEAR;
2910 	FLAG_N = NFLAG_32(src);
2911 	FLAG_Z = src;
2912 	FLAG_V = VFLAG_CLEAR;
2913 }
2914 
2915 
m68k_op_ror_16_ai(void)2916 void m68k_op_ror_16_ai(void)
2917 {
2918 	uint ea = EA_AY_AI_16();
2919 	uint src = m68ki_read_16(ea);
2920 	uint res = ROR_16(src, 1);
2921 
2922 	m68ki_write_16(ea, res);
2923 
2924 	FLAG_N = NFLAG_16(res);
2925 	FLAG_Z = res;
2926 	FLAG_C = src << 8;
2927 	FLAG_V = VFLAG_CLEAR;
2928 }
2929 
2930 
m68k_op_ror_16_pi(void)2931 void m68k_op_ror_16_pi(void)
2932 {
2933 	uint ea = EA_AY_PI_16();
2934 	uint src = m68ki_read_16(ea);
2935 	uint res = ROR_16(src, 1);
2936 
2937 	m68ki_write_16(ea, res);
2938 
2939 	FLAG_N = NFLAG_16(res);
2940 	FLAG_Z = res;
2941 	FLAG_C = src << 8;
2942 	FLAG_V = VFLAG_CLEAR;
2943 }
2944 
2945 
m68k_op_ror_16_pd(void)2946 void m68k_op_ror_16_pd(void)
2947 {
2948 	uint ea = EA_AY_PD_16();
2949 	uint src = m68ki_read_16(ea);
2950 	uint res = ROR_16(src, 1);
2951 
2952 	m68ki_write_16(ea, res);
2953 
2954 	FLAG_N = NFLAG_16(res);
2955 	FLAG_Z = res;
2956 	FLAG_C = src << 8;
2957 	FLAG_V = VFLAG_CLEAR;
2958 }
2959 
2960 
m68k_op_ror_16_di(void)2961 void m68k_op_ror_16_di(void)
2962 {
2963 	uint ea = EA_AY_DI_16();
2964 	uint src = m68ki_read_16(ea);
2965 	uint res = ROR_16(src, 1);
2966 
2967 	m68ki_write_16(ea, res);
2968 
2969 	FLAG_N = NFLAG_16(res);
2970 	FLAG_Z = res;
2971 	FLAG_C = src << 8;
2972 	FLAG_V = VFLAG_CLEAR;
2973 }
2974 
2975 
m68k_op_ror_16_ix(void)2976 void m68k_op_ror_16_ix(void)
2977 {
2978 	uint ea = EA_AY_IX_16();
2979 	uint src = m68ki_read_16(ea);
2980 	uint res = ROR_16(src, 1);
2981 
2982 	m68ki_write_16(ea, res);
2983 
2984 	FLAG_N = NFLAG_16(res);
2985 	FLAG_Z = res;
2986 	FLAG_C = src << 8;
2987 	FLAG_V = VFLAG_CLEAR;
2988 }
2989 
2990 
m68k_op_ror_16_aw(void)2991 void m68k_op_ror_16_aw(void)
2992 {
2993 	uint ea = EA_AW_16();
2994 	uint src = m68ki_read_16(ea);
2995 	uint res = ROR_16(src, 1);
2996 
2997 	m68ki_write_16(ea, res);
2998 
2999 	FLAG_N = NFLAG_16(res);
3000 	FLAG_Z = res;
3001 	FLAG_C = src << 8;
3002 	FLAG_V = VFLAG_CLEAR;
3003 }
3004 
3005 
m68k_op_ror_16_al(void)3006 void m68k_op_ror_16_al(void)
3007 {
3008 	uint ea = EA_AL_16();
3009 	uint src = m68ki_read_16(ea);
3010 	uint res = ROR_16(src, 1);
3011 
3012 	m68ki_write_16(ea, res);
3013 
3014 	FLAG_N = NFLAG_16(res);
3015 	FLAG_Z = res;
3016 	FLAG_C = src << 8;
3017 	FLAG_V = VFLAG_CLEAR;
3018 }
3019 
3020 
m68k_op_rol_8_s(void)3021 void m68k_op_rol_8_s(void)
3022 {
3023 	uint* r_dst = &DY;
3024 	uint orig_shift = (((REG_IR >> 9) - 1) & 7) + 1;
3025 	uint shift = orig_shift & 7;
3026 	uint src = MASK_OUT_ABOVE_8(*r_dst);
3027 	uint res = ROL_8(src, shift);
3028 
3029 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3030 
3031 	FLAG_N = NFLAG_8(res);
3032 	FLAG_Z = res;
3033 	FLAG_C = src << orig_shift;
3034 	FLAG_V = VFLAG_CLEAR;
3035 }
3036 
3037 
m68k_op_rol_16_s(void)3038 void m68k_op_rol_16_s(void)
3039 {
3040 	uint* r_dst = &DY;
3041 	uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3042 	uint src = MASK_OUT_ABOVE_16(*r_dst);
3043 	uint res = ROL_16(src, shift);
3044 
3045 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3046 
3047 	FLAG_N = NFLAG_16(res);
3048 	FLAG_Z = res;
3049 	FLAG_C = src >> (8-shift);
3050 	FLAG_V = VFLAG_CLEAR;
3051 }
3052 
3053 
m68k_op_rol_32_s(void)3054 void m68k_op_rol_32_s(void)
3055 {
3056 	uint* r_dst = &DY;
3057 	uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3058 	uint64 src = *r_dst;
3059 	uint res = ROL_32(src, shift);
3060 
3061 	*r_dst = res;
3062 
3063 	FLAG_N = NFLAG_32(res);
3064 	FLAG_Z = res;
3065 	FLAG_C = src >> (24-shift);
3066 	FLAG_V = VFLAG_CLEAR;
3067 }
3068 
3069 
m68k_op_rol_8_r(void)3070 void m68k_op_rol_8_r(void)
3071 {
3072 	uint* r_dst = &DY;
3073 	uint orig_shift = DX & 0x3f;
3074 	uint shift = orig_shift & 7;
3075 	uint src = MASK_OUT_ABOVE_8(*r_dst);
3076 	uint res = ROL_8(src, shift);
3077 
3078 	if(orig_shift != 0)
3079 	{
3080 		USE_CYCLES(orig_shift<<CYC_SHIFT);
3081 
3082 		if(shift != 0)
3083 		{
3084 			*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3085 			FLAG_C = src << shift;
3086 			FLAG_N = NFLAG_8(res);
3087 			FLAG_Z = res;
3088 			FLAG_V = VFLAG_CLEAR;
3089 			return;
3090 		}
3091 		FLAG_C = (src & 1)<<8;
3092 		FLAG_N = NFLAG_8(src);
3093 		FLAG_Z = src;
3094 		FLAG_V = VFLAG_CLEAR;
3095 		return;
3096 	}
3097 
3098 	FLAG_C = CFLAG_CLEAR;
3099 	FLAG_N = NFLAG_8(src);
3100 	FLAG_Z = src;
3101 	FLAG_V = VFLAG_CLEAR;
3102 }
3103 
3104 
m68k_op_rol_16_r(void)3105 void m68k_op_rol_16_r(void)
3106 {
3107 	uint* r_dst = &DY;
3108 	uint orig_shift = DX & 0x3f;
3109 	uint shift = orig_shift & 15;
3110 	uint src = MASK_OUT_ABOVE_16(*r_dst);
3111 	uint res = MASK_OUT_ABOVE_16(ROL_16(src, shift));
3112 
3113 	if(orig_shift != 0)
3114 	{
3115 		USE_CYCLES(orig_shift<<CYC_SHIFT);
3116 
3117 		if(shift != 0)
3118 		{
3119 			*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3120 			FLAG_C = (src << shift) >> 8;
3121 			FLAG_N = NFLAG_16(res);
3122 			FLAG_Z = res;
3123 			FLAG_V = VFLAG_CLEAR;
3124 			return;
3125 		}
3126 		FLAG_C = (src & 1)<<8;
3127 		FLAG_N = NFLAG_16(src);
3128 		FLAG_Z = src;
3129 		FLAG_V = VFLAG_CLEAR;
3130 		return;
3131 	}
3132 
3133 	FLAG_C = CFLAG_CLEAR;
3134 	FLAG_N = NFLAG_16(src);
3135 	FLAG_Z = src;
3136 	FLAG_V = VFLAG_CLEAR;
3137 }
3138 
3139 
m68k_op_rol_32_r(void)3140 void m68k_op_rol_32_r(void)
3141 {
3142 	uint* r_dst = &DY;
3143 	uint orig_shift = DX & 0x3f;
3144 	uint shift = orig_shift & 31;
3145 	uint64 src = *r_dst;
3146 	uint res = ROL_32(src, shift);
3147 
3148 	if(orig_shift != 0)
3149 	{
3150 		USE_CYCLES(orig_shift<<CYC_SHIFT);
3151 
3152 		*r_dst = res;
3153 
3154 		FLAG_C = (src >> (32 - shift)) << 8;
3155 		FLAG_N = NFLAG_32(res);
3156 		FLAG_Z = res;
3157 		FLAG_V = VFLAG_CLEAR;
3158 		return;
3159 	}
3160 
3161 	FLAG_C = CFLAG_CLEAR;
3162 	FLAG_N = NFLAG_32(src);
3163 	FLAG_Z = src;
3164 	FLAG_V = VFLAG_CLEAR;
3165 }
3166 
3167 
m68k_op_rol_16_ai(void)3168 void m68k_op_rol_16_ai(void)
3169 {
3170 	uint ea = EA_AY_AI_16();
3171 	uint src = m68ki_read_16(ea);
3172 	uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3173 
3174 	m68ki_write_16(ea, res);
3175 
3176 	FLAG_N = NFLAG_16(res);
3177 	FLAG_Z = res;
3178 	FLAG_C = src >> 7;
3179 	FLAG_V = VFLAG_CLEAR;
3180 }
3181 
3182 
m68k_op_rol_16_pi(void)3183 void m68k_op_rol_16_pi(void)
3184 {
3185 	uint ea = EA_AY_PI_16();
3186 	uint src = m68ki_read_16(ea);
3187 	uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3188 
3189 	m68ki_write_16(ea, res);
3190 
3191 	FLAG_N = NFLAG_16(res);
3192 	FLAG_Z = res;
3193 	FLAG_C = src >> 7;
3194 	FLAG_V = VFLAG_CLEAR;
3195 }
3196 
3197 
m68k_op_rol_16_pd(void)3198 void m68k_op_rol_16_pd(void)
3199 {
3200 	uint ea = EA_AY_PD_16();
3201 	uint src = m68ki_read_16(ea);
3202 	uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3203 
3204 	m68ki_write_16(ea, res);
3205 
3206 	FLAG_N = NFLAG_16(res);
3207 	FLAG_Z = res;
3208 	FLAG_C = src >> 7;
3209 	FLAG_V = VFLAG_CLEAR;
3210 }
3211 
3212 
m68k_op_rol_16_di(void)3213 void m68k_op_rol_16_di(void)
3214 {
3215 	uint ea = EA_AY_DI_16();
3216 	uint src = m68ki_read_16(ea);
3217 	uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3218 
3219 	m68ki_write_16(ea, res);
3220 
3221 	FLAG_N = NFLAG_16(res);
3222 	FLAG_Z = res;
3223 	FLAG_C = src >> 7;
3224 	FLAG_V = VFLAG_CLEAR;
3225 }
3226 
3227 
m68k_op_rol_16_ix(void)3228 void m68k_op_rol_16_ix(void)
3229 {
3230 	uint ea = EA_AY_IX_16();
3231 	uint src = m68ki_read_16(ea);
3232 	uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3233 
3234 	m68ki_write_16(ea, res);
3235 
3236 	FLAG_N = NFLAG_16(res);
3237 	FLAG_Z = res;
3238 	FLAG_C = src >> 7;
3239 	FLAG_V = VFLAG_CLEAR;
3240 }
3241 
3242 
m68k_op_rol_16_aw(void)3243 void m68k_op_rol_16_aw(void)
3244 {
3245 	uint ea = EA_AW_16();
3246 	uint src = m68ki_read_16(ea);
3247 	uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3248 
3249 	m68ki_write_16(ea, res);
3250 
3251 	FLAG_N = NFLAG_16(res);
3252 	FLAG_Z = res;
3253 	FLAG_C = src >> 7;
3254 	FLAG_V = VFLAG_CLEAR;
3255 }
3256 
3257 
m68k_op_rol_16_al(void)3258 void m68k_op_rol_16_al(void)
3259 {
3260 	uint ea = EA_AL_16();
3261 	uint src = m68ki_read_16(ea);
3262 	uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));
3263 
3264 	m68ki_write_16(ea, res);
3265 
3266 	FLAG_N = NFLAG_16(res);
3267 	FLAG_Z = res;
3268 	FLAG_C = src >> 7;
3269 	FLAG_V = VFLAG_CLEAR;
3270 }
3271 
3272 
m68k_op_roxr_8_s(void)3273 void m68k_op_roxr_8_s(void)
3274 {
3275 	uint* r_dst = &DY;
3276 	uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3277 	uint src = MASK_OUT_ABOVE_8(*r_dst);
3278 	uint res = ROR_9(src | (XFLAG_AS_1() << 8), shift);
3279 
3280 	FLAG_C = FLAG_X = res;
3281 	res = MASK_OUT_ABOVE_8(res);
3282 
3283 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3284 
3285 	FLAG_N = NFLAG_8(res);
3286 	FLAG_Z = res;
3287 	FLAG_V = VFLAG_CLEAR;
3288 }
3289 
3290 
m68k_op_roxr_16_s(void)3291 void m68k_op_roxr_16_s(void)
3292 {
3293 	uint* r_dst = &DY;
3294 	uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3295 	uint src = MASK_OUT_ABOVE_16(*r_dst);
3296 	uint res = ROR_17(src | (XFLAG_AS_1() << 16), shift);
3297 
3298 	FLAG_C = FLAG_X = res >> 8;
3299 	res = MASK_OUT_ABOVE_16(res);
3300 
3301 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3302 
3303 	FLAG_N = NFLAG_16(res);
3304 	FLAG_Z = res;
3305 	FLAG_V = VFLAG_CLEAR;
3306 }
3307 
3308 
m68k_op_roxr_32_s(void)3309 void m68k_op_roxr_32_s(void)
3310 {
3311 #if M68K_USE_64_BIT
3312 
3313 	uint*  r_dst = &DY;
3314 	uint   shift = (((REG_IR >> 9) - 1) & 7) + 1;
3315 	uint64 src   = *r_dst;
3316 	uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);
3317 
3318 	res = ROR_33_64(res, shift);
3319 
3320 	FLAG_C = FLAG_X = res >> 24;
3321 	res = MASK_OUT_ABOVE_32(res);
3322 
3323 	*r_dst =  res;
3324 
3325 	FLAG_N = NFLAG_32(res);
3326 	FLAG_Z = res;
3327 	FLAG_V = VFLAG_CLEAR;
3328 
3329 #else
3330 
3331 	uint* r_dst = &DY;
3332 	uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3333 	uint src = *r_dst;
3334 	uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift)));
3335 	uint new_x_flag = src & (1 << (shift - 1));
3336 
3337 	*r_dst = res;
3338 
3339 	FLAG_C = FLAG_X = (new_x_flag != 0)<<8;
3340 	FLAG_N = NFLAG_32(res);
3341 	FLAG_Z = res;
3342 	FLAG_V = VFLAG_CLEAR;
3343 
3344 #endif
3345 }
3346 
3347 
m68k_op_roxr_8_r(void)3348 void m68k_op_roxr_8_r(void)
3349 {
3350 	uint* r_dst = &DY;
3351 	uint orig_shift = DX & 0x3f;
3352 
3353 	if(orig_shift != 0)
3354 	{
3355 		uint shift = orig_shift % 9;
3356 		uint src   = MASK_OUT_ABOVE_8(*r_dst);
3357 		uint res   = ROR_9(src | (XFLAG_AS_1() << 8), shift);
3358 
3359 		USE_CYCLES(orig_shift<<CYC_SHIFT);
3360 
3361 		FLAG_C = FLAG_X = res;
3362 		res = MASK_OUT_ABOVE_8(res);
3363 
3364 		*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3365 		FLAG_N = NFLAG_8(res);
3366 		FLAG_Z = res;
3367 		FLAG_V = VFLAG_CLEAR;
3368 		return;
3369 	}
3370 
3371 	FLAG_C = FLAG_X;
3372 	FLAG_N = NFLAG_8(*r_dst);
3373 	FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
3374 	FLAG_V = VFLAG_CLEAR;
3375 }
3376 
3377 
m68k_op_roxr_16_r(void)3378 void m68k_op_roxr_16_r(void)
3379 {
3380 	uint* r_dst = &DY;
3381 	uint orig_shift = DX & 0x3f;
3382 
3383 	if(orig_shift != 0)
3384 	{
3385 		uint shift = orig_shift % 17;
3386 		uint src   = MASK_OUT_ABOVE_16(*r_dst);
3387 		uint res   = ROR_17(src | (XFLAG_AS_1() << 16), shift);
3388 
3389 		USE_CYCLES(orig_shift<<CYC_SHIFT);
3390 
3391 		FLAG_C = FLAG_X = res >> 8;
3392 		res = MASK_OUT_ABOVE_16(res);
3393 
3394 		*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3395 		FLAG_N = NFLAG_16(res);
3396 		FLAG_Z = res;
3397 		FLAG_V = VFLAG_CLEAR;
3398 		return;
3399 	}
3400 
3401 	FLAG_C = FLAG_X;
3402 	FLAG_N = NFLAG_16(*r_dst);
3403 	FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);
3404 	FLAG_V = VFLAG_CLEAR;
3405 }
3406 
3407 
m68k_op_roxr_32_r(void)3408 void m68k_op_roxr_32_r(void)
3409 {
3410 #if M68K_USE_64_BIT
3411 
3412 	uint*  r_dst = &DY;
3413 	uint   orig_shift = DX & 0x3f;
3414 
3415 	if(orig_shift != 0)
3416 	{
3417 		uint   shift = orig_shift % 33;
3418 		uint64 src   = *r_dst;
3419 		uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);
3420 
3421 		res = ROR_33_64(res, shift);
3422 
3423 		USE_CYCLES(orig_shift<<CYC_SHIFT);
3424 
3425 		FLAG_C = FLAG_X = res >> 24;
3426 		res = MASK_OUT_ABOVE_32(res);
3427 
3428 		*r_dst = res;
3429 		FLAG_N = NFLAG_32(res);
3430 		FLAG_Z = res;
3431 		FLAG_V = VFLAG_CLEAR;
3432 		return;
3433 	}
3434 
3435 	FLAG_C = FLAG_X;
3436 	FLAG_N = NFLAG_32(*r_dst);
3437 	FLAG_Z = *r_dst;
3438 	FLAG_V = VFLAG_CLEAR;
3439 
3440 #else
3441 
3442 	uint* r_dst = &DY;
3443 	uint orig_shift = DX & 0x3f;
3444 	uint shift = orig_shift % 33;
3445 	uint src = *r_dst;
3446 	uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift)));
3447 	uint new_x_flag = src & (1 << (shift - 1));
3448 
3449 	if(orig_shift != 0)
3450 		USE_CYCLES(orig_shift<<CYC_SHIFT);
3451 
3452 	if(shift != 0)
3453 	{
3454 		*r_dst = res;
3455 		FLAG_X = (new_x_flag != 0)<<8;
3456 	}
3457 	else
3458 		res = src;
3459 	FLAG_C = FLAG_X;
3460 	FLAG_N = NFLAG_32(res);
3461 	FLAG_Z = res;
3462 	FLAG_V = VFLAG_CLEAR;
3463 
3464 #endif
3465 }
3466 
3467 
m68k_op_roxr_16_ai(void)3468 void m68k_op_roxr_16_ai(void)
3469 {
3470 	uint ea = EA_AY_AI_16();
3471 	uint src = m68ki_read_16(ea);
3472 	uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3473 
3474 	FLAG_C = FLAG_X = res >> 8;
3475 	res = MASK_OUT_ABOVE_16(res);
3476 
3477 	m68ki_write_16(ea, res);
3478 
3479 	FLAG_N = NFLAG_16(res);
3480 	FLAG_Z = res;
3481 	FLAG_V = VFLAG_CLEAR;
3482 }
3483 
3484 
m68k_op_roxr_16_pi(void)3485 void m68k_op_roxr_16_pi(void)
3486 {
3487 	uint ea = EA_AY_PI_16();
3488 	uint src = m68ki_read_16(ea);
3489 	uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3490 
3491 	FLAG_C = FLAG_X = res >> 8;
3492 	res = MASK_OUT_ABOVE_16(res);
3493 
3494 	m68ki_write_16(ea, res);
3495 
3496 	FLAG_N = NFLAG_16(res);
3497 	FLAG_Z = res;
3498 	FLAG_V = VFLAG_CLEAR;
3499 }
3500 
3501 
m68k_op_roxr_16_pd(void)3502 void m68k_op_roxr_16_pd(void)
3503 {
3504 	uint ea = EA_AY_PD_16();
3505 	uint src = m68ki_read_16(ea);
3506 	uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3507 
3508 	FLAG_C = FLAG_X = res >> 8;
3509 	res = MASK_OUT_ABOVE_16(res);
3510 
3511 	m68ki_write_16(ea, res);
3512 
3513 	FLAG_N = NFLAG_16(res);
3514 	FLAG_Z = res;
3515 	FLAG_V = VFLAG_CLEAR;
3516 }
3517 
3518 
m68k_op_roxr_16_di(void)3519 void m68k_op_roxr_16_di(void)
3520 {
3521 	uint ea = EA_AY_DI_16();
3522 	uint src = m68ki_read_16(ea);
3523 	uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3524 
3525 	FLAG_C = FLAG_X = res >> 8;
3526 	res = MASK_OUT_ABOVE_16(res);
3527 
3528 	m68ki_write_16(ea, res);
3529 
3530 	FLAG_N = NFLAG_16(res);
3531 	FLAG_Z = res;
3532 	FLAG_V = VFLAG_CLEAR;
3533 }
3534 
3535 
m68k_op_roxr_16_ix(void)3536 void m68k_op_roxr_16_ix(void)
3537 {
3538 	uint ea = EA_AY_IX_16();
3539 	uint src = m68ki_read_16(ea);
3540 	uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3541 
3542 	FLAG_C = FLAG_X = res >> 8;
3543 	res = MASK_OUT_ABOVE_16(res);
3544 
3545 	m68ki_write_16(ea, res);
3546 
3547 	FLAG_N = NFLAG_16(res);
3548 	FLAG_Z = res;
3549 	FLAG_V = VFLAG_CLEAR;
3550 }
3551 
3552 
m68k_op_roxr_16_aw(void)3553 void m68k_op_roxr_16_aw(void)
3554 {
3555 	uint ea = EA_AW_16();
3556 	uint src = m68ki_read_16(ea);
3557 	uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3558 
3559 	FLAG_C = FLAG_X = res >> 8;
3560 	res = MASK_OUT_ABOVE_16(res);
3561 
3562 	m68ki_write_16(ea, res);
3563 
3564 	FLAG_N = NFLAG_16(res);
3565 	FLAG_Z = res;
3566 	FLAG_V = VFLAG_CLEAR;
3567 }
3568 
3569 
m68k_op_roxr_16_al(void)3570 void m68k_op_roxr_16_al(void)
3571 {
3572 	uint ea = EA_AL_16();
3573 	uint src = m68ki_read_16(ea);
3574 	uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);
3575 
3576 	FLAG_C = FLAG_X = res >> 8;
3577 	res = MASK_OUT_ABOVE_16(res);
3578 
3579 	m68ki_write_16(ea, res);
3580 
3581 	FLAG_N = NFLAG_16(res);
3582 	FLAG_Z = res;
3583 	FLAG_V = VFLAG_CLEAR;
3584 }
3585 
3586 
m68k_op_roxl_8_s(void)3587 void m68k_op_roxl_8_s(void)
3588 {
3589 	uint* r_dst = &DY;
3590 	uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3591 	uint src = MASK_OUT_ABOVE_8(*r_dst);
3592 	uint res = ROL_9(src | (XFLAG_AS_1() << 8), shift);
3593 
3594 	FLAG_C = FLAG_X = res;
3595 	res = MASK_OUT_ABOVE_8(res);
3596 
3597 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3598 
3599 	FLAG_N = NFLAG_8(res);
3600 	FLAG_Z = res;
3601 	FLAG_V = VFLAG_CLEAR;
3602 }
3603 
3604 
m68k_op_roxl_16_s(void)3605 void m68k_op_roxl_16_s(void)
3606 {
3607 	uint* r_dst = &DY;
3608 	uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3609 	uint src = MASK_OUT_ABOVE_16(*r_dst);
3610 	uint res = ROL_17(src | (XFLAG_AS_1() << 16), shift);
3611 
3612 	FLAG_C = FLAG_X = res >> 8;
3613 	res = MASK_OUT_ABOVE_16(res);
3614 
3615 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3616 
3617 	FLAG_N = NFLAG_16(res);
3618 	FLAG_Z = res;
3619 	FLAG_V = VFLAG_CLEAR;
3620 }
3621 
3622 
m68k_op_roxl_32_s(void)3623 void m68k_op_roxl_32_s(void)
3624 {
3625 #if M68K_USE_64_BIT
3626 
3627 	uint*  r_dst = &DY;
3628 	uint   shift = (((REG_IR >> 9) - 1) & 7) + 1;
3629 	uint64 src   = *r_dst;
3630 	uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);
3631 
3632 	res = ROL_33_64(res, shift);
3633 
3634 	FLAG_C = FLAG_X = res >> 24;
3635 	res = MASK_OUT_ABOVE_32(res);
3636 
3637 	*r_dst = res;
3638 
3639 	FLAG_N = NFLAG_32(res);
3640 	FLAG_Z = res;
3641 	FLAG_V = VFLAG_CLEAR;
3642 
3643 #else
3644 
3645 	uint* r_dst = &DY;
3646 	uint shift = (((REG_IR >> 9) - 1) & 7) + 1;
3647 	uint src = *r_dst;
3648 	uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1)));
3649 	uint new_x_flag = src & (1 << (32 - shift));
3650 
3651 	*r_dst = res;
3652 
3653 	FLAG_C = FLAG_X = (new_x_flag != 0)<<8;
3654 	FLAG_N = NFLAG_32(res);
3655 	FLAG_Z = res;
3656 	FLAG_V = VFLAG_CLEAR;
3657 
3658 #endif
3659 }
3660 
3661 
m68k_op_roxl_8_r(void)3662 void m68k_op_roxl_8_r(void)
3663 {
3664 	uint* r_dst = &DY;
3665 	uint orig_shift = DX & 0x3f;
3666 
3667 
3668 	if(orig_shift != 0)
3669 	{
3670 		uint shift = orig_shift % 9;
3671 		uint src   = MASK_OUT_ABOVE_8(*r_dst);
3672 		uint res   = ROL_9(src | (XFLAG_AS_1() << 8), shift);
3673 
3674 		USE_CYCLES(orig_shift<<CYC_SHIFT);
3675 
3676 		FLAG_C = FLAG_X = res;
3677 		res = MASK_OUT_ABOVE_8(res);
3678 
3679 		*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
3680 		FLAG_N = NFLAG_8(res);
3681 		FLAG_Z = res;
3682 		FLAG_V = VFLAG_CLEAR;
3683 		return;
3684 	}
3685 
3686 	FLAG_C = FLAG_X;
3687 	FLAG_N = NFLAG_8(*r_dst);
3688 	FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
3689 	FLAG_V = VFLAG_CLEAR;
3690 }
3691 
3692 
m68k_op_roxl_16_r(void)3693 void m68k_op_roxl_16_r(void)
3694 {
3695 	uint* r_dst = &DY;
3696 	uint orig_shift = DX & 0x3f;
3697 
3698 	if(orig_shift != 0)
3699 	{
3700 		uint shift = orig_shift % 17;
3701 		uint src   = MASK_OUT_ABOVE_16(*r_dst);
3702 		uint res   = ROL_17(src | (XFLAG_AS_1() << 16), shift);
3703 
3704 		USE_CYCLES(orig_shift<<CYC_SHIFT);
3705 
3706 		FLAG_C = FLAG_X = res >> 8;
3707 		res = MASK_OUT_ABOVE_16(res);
3708 
3709 		*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
3710 		FLAG_N = NFLAG_16(res);
3711 		FLAG_Z = res;
3712 		FLAG_V = VFLAG_CLEAR;
3713 		return;
3714 	}
3715 
3716 	FLAG_C = FLAG_X;
3717 	FLAG_N = NFLAG_16(*r_dst);
3718 	FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);
3719 	FLAG_V = VFLAG_CLEAR;
3720 }
3721 
3722 
m68k_op_roxl_32_r(void)3723 void m68k_op_roxl_32_r(void)
3724 {
3725 #if M68K_USE_64_BIT
3726 
3727 	uint*  r_dst = &DY;
3728 	uint   orig_shift = DX & 0x3f;
3729 
3730 	if(orig_shift != 0)
3731 	{
3732 		uint   shift = orig_shift % 33;
3733 		uint64 src   = *r_dst;
3734 		uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);
3735 
3736 		res = ROL_33_64(res, shift);
3737 
3738 		USE_CYCLES(orig_shift<<CYC_SHIFT);
3739 
3740 		FLAG_C = FLAG_X = res >> 24;
3741 		res = MASK_OUT_ABOVE_32(res);
3742 
3743 		*r_dst = res;
3744 		FLAG_N = NFLAG_32(res);
3745 		FLAG_Z = res;
3746 		FLAG_V = VFLAG_CLEAR;
3747 		return;
3748 	}
3749 
3750 	FLAG_C = FLAG_X;
3751 	FLAG_N = NFLAG_32(*r_dst);
3752 	FLAG_Z = *r_dst;
3753 	FLAG_V = VFLAG_CLEAR;
3754 
3755 #else
3756 
3757 	uint* r_dst = &DY;
3758 	uint orig_shift = DX & 0x3f;
3759 	uint shift = orig_shift % 33;
3760 	uint src = *r_dst;
3761 	uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1)));
3762 	uint new_x_flag = src & (1 << (32 - shift));
3763 
3764 	if(orig_shift != 0)
3765 		USE_CYCLES(orig_shift<<CYC_SHIFT);
3766 
3767 	if(shift != 0)
3768 	{
3769 		*r_dst = res;
3770 		FLAG_X = (new_x_flag != 0)<<8;
3771 	}
3772 	else
3773 		res = src;
3774 	FLAG_C = FLAG_X;
3775 	FLAG_N = NFLAG_32(res);
3776 	FLAG_Z = res;
3777 	FLAG_V = VFLAG_CLEAR;
3778 
3779 #endif
3780 }
3781 
3782 
m68k_op_roxl_16_ai(void)3783 void m68k_op_roxl_16_ai(void)
3784 {
3785 	uint ea = EA_AY_AI_16();
3786 	uint src = m68ki_read_16(ea);
3787 	uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3788 
3789 	FLAG_C = FLAG_X = res >> 8;
3790 	res = MASK_OUT_ABOVE_16(res);
3791 
3792 	m68ki_write_16(ea, res);
3793 
3794 	FLAG_N = NFLAG_16(res);
3795 	FLAG_Z = res;
3796 	FLAG_V = VFLAG_CLEAR;
3797 }
3798 
3799 
m68k_op_roxl_16_pi(void)3800 void m68k_op_roxl_16_pi(void)
3801 {
3802 	uint ea = EA_AY_PI_16();
3803 	uint src = m68ki_read_16(ea);
3804 	uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3805 
3806 	FLAG_C = FLAG_X = res >> 8;
3807 	res = MASK_OUT_ABOVE_16(res);
3808 
3809 	m68ki_write_16(ea, res);
3810 
3811 	FLAG_N = NFLAG_16(res);
3812 	FLAG_Z = res;
3813 	FLAG_V = VFLAG_CLEAR;
3814 }
3815 
3816 
m68k_op_roxl_16_pd(void)3817 void m68k_op_roxl_16_pd(void)
3818 {
3819 	uint ea = EA_AY_PD_16();
3820 	uint src = m68ki_read_16(ea);
3821 	uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3822 
3823 	FLAG_C = FLAG_X = res >> 8;
3824 	res = MASK_OUT_ABOVE_16(res);
3825 
3826 	m68ki_write_16(ea, res);
3827 
3828 	FLAG_N = NFLAG_16(res);
3829 	FLAG_Z = res;
3830 	FLAG_V = VFLAG_CLEAR;
3831 }
3832 
3833 
m68k_op_roxl_16_di(void)3834 void m68k_op_roxl_16_di(void)
3835 {
3836 	uint ea = EA_AY_DI_16();
3837 	uint src = m68ki_read_16(ea);
3838 	uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3839 
3840 	FLAG_C = FLAG_X = res >> 8;
3841 	res = MASK_OUT_ABOVE_16(res);
3842 
3843 	m68ki_write_16(ea, res);
3844 
3845 	FLAG_N = NFLAG_16(res);
3846 	FLAG_Z = res;
3847 	FLAG_V = VFLAG_CLEAR;
3848 }
3849 
3850 
m68k_op_roxl_16_ix(void)3851 void m68k_op_roxl_16_ix(void)
3852 {
3853 	uint ea = EA_AY_IX_16();
3854 	uint src = m68ki_read_16(ea);
3855 	uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3856 
3857 	FLAG_C = FLAG_X = res >> 8;
3858 	res = MASK_OUT_ABOVE_16(res);
3859 
3860 	m68ki_write_16(ea, res);
3861 
3862 	FLAG_N = NFLAG_16(res);
3863 	FLAG_Z = res;
3864 	FLAG_V = VFLAG_CLEAR;
3865 }
3866 
3867 
m68k_op_roxl_16_aw(void)3868 void m68k_op_roxl_16_aw(void)
3869 {
3870 	uint ea = EA_AW_16();
3871 	uint src = m68ki_read_16(ea);
3872 	uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3873 
3874 	FLAG_C = FLAG_X = res >> 8;
3875 	res = MASK_OUT_ABOVE_16(res);
3876 
3877 	m68ki_write_16(ea, res);
3878 
3879 	FLAG_N = NFLAG_16(res);
3880 	FLAG_Z = res;
3881 	FLAG_V = VFLAG_CLEAR;
3882 }
3883 
3884 
m68k_op_roxl_16_al(void)3885 void m68k_op_roxl_16_al(void)
3886 {
3887 	uint ea = EA_AL_16();
3888 	uint src = m68ki_read_16(ea);
3889 	uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);
3890 
3891 	FLAG_C = FLAG_X = res >> 8;
3892 	res = MASK_OUT_ABOVE_16(res);
3893 
3894 	m68ki_write_16(ea, res);
3895 
3896 	FLAG_N = NFLAG_16(res);
3897 	FLAG_Z = res;
3898 	FLAG_V = VFLAG_CLEAR;
3899 }
3900 
3901 
m68k_op_rtd_32(void)3902 void m68k_op_rtd_32(void)
3903 {
3904 	if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))
3905 	{
3906 		uint new_pc = m68ki_pull_32();
3907 
3908 		m68ki_trace_t0();			   /* auto-disable (see m68kcpu.h) */
3909 		REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16()));
3910 		m68ki_jump(new_pc);
3911 		return;
3912 	}
3913 	m68ki_exception_illegal();
3914 }
3915 
3916 
m68k_op_rte_32(void)3917 void m68k_op_rte_32(void)
3918 {
3919 	if(FLAG_S)
3920 	{
3921 		uint new_sr;
3922 		uint new_pc;
3923 		uint format_word;
3924 
3925 		m68ki_trace_t0();			   /* auto-disable (see m68kcpu.h) */
3926 
3927 		if(CPU_TYPE_IS_000(CPU_TYPE))
3928 		{
3929 			new_sr = m68ki_pull_16();
3930 			new_pc = m68ki_pull_32();
3931 			m68ki_jump(new_pc);
3932 			m68ki_set_sr(new_sr);
3933 
3934 			CPU_INSTR_MODE = INSTRUCTION_YES;
3935 			CPU_RUN_MODE = RUN_MODE_NORMAL;
3936 
3937 			return;
3938 		}
3939 
3940 		if(CPU_TYPE_IS_010(CPU_TYPE))
3941 		{
3942 			format_word = m68ki_read_16(REG_A[7]+6) >> 12;
3943 			if(format_word == 0)
3944 			{
3945 				new_sr = m68ki_pull_16();
3946 				new_pc = m68ki_pull_32();
3947 				m68ki_fake_pull_16();	/* format word */
3948 				m68ki_jump(new_pc);
3949 				m68ki_set_sr(new_sr);
3950 				CPU_INSTR_MODE = INSTRUCTION_YES;
3951 				CPU_RUN_MODE = RUN_MODE_NORMAL;
3952 				return;
3953 			}
3954 			CPU_INSTR_MODE = INSTRUCTION_YES;
3955 			CPU_RUN_MODE = RUN_MODE_NORMAL;
3956 			/* Not handling bus fault (9) */
3957 			m68ki_exception_format_error();
3958 			return;
3959 		}
3960 
3961 		/* Otherwise it's 020 */
3962 rte_loop:
3963 		format_word = m68ki_read_16(REG_A[7]+6) >> 12;
3964 		switch(format_word)
3965 		{
3966 			case 0: /* Normal */
3967 				new_sr = m68ki_pull_16();
3968 				new_pc = m68ki_pull_32();
3969 				m68ki_fake_pull_16();	/* format word */
3970 				m68ki_jump(new_pc);
3971 				m68ki_set_sr(new_sr);
3972 				CPU_INSTR_MODE = INSTRUCTION_YES;
3973 				CPU_RUN_MODE = RUN_MODE_NORMAL;
3974 				return;
3975 			case 1: /* Throwaway */
3976 				new_sr = m68ki_pull_16();
3977 				m68ki_fake_pull_32();	/* program counter */
3978 				m68ki_fake_pull_16();	/* format word */
3979 				m68ki_set_sr_noint(new_sr);
3980 				goto rte_loop;
3981 			case 2: /* Trap */
3982 				new_sr = m68ki_pull_16();
3983 				new_pc = m68ki_pull_32();
3984 				m68ki_fake_pull_16();	/* format word */
3985 				m68ki_fake_pull_32();	/* address */
3986 				m68ki_jump(new_pc);
3987 				m68ki_set_sr(new_sr);
3988 				CPU_INSTR_MODE = INSTRUCTION_YES;
3989 				CPU_RUN_MODE = RUN_MODE_NORMAL;
3990 				return;
3991 		}
3992 		/* Not handling long or short bus fault */
3993 		CPU_INSTR_MODE = INSTRUCTION_YES;
3994 		CPU_RUN_MODE = RUN_MODE_NORMAL;
3995 		m68ki_exception_format_error();
3996 		return;
3997 	}
3998 	m68ki_exception_privilege_violation();
3999 }
4000 
4001 
m68k_op_rtm_32(void)4002 void m68k_op_rtm_32(void)
4003 {
4004 	if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))
4005 	{
4006 		m68ki_trace_t0();			   /* auto-disable (see m68kcpu.h) */
4007 		M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",
4008 					 m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,
4009 					 m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));
4010 		return;
4011 	}
4012 	m68ki_exception_illegal();
4013 }
4014 
4015 
m68k_op_rtr_32(void)4016 void m68k_op_rtr_32(void)
4017 {
4018 	m68ki_trace_t0();				   /* auto-disable (see m68kcpu.h) */
4019 	m68ki_set_ccr(m68ki_pull_16());
4020 	m68ki_jump(m68ki_pull_32());
4021 }
4022 
4023 
m68k_op_rts_32(void)4024 void m68k_op_rts_32(void)
4025 {
4026 	m68ki_trace_t0();				   /* auto-disable (see m68kcpu.h) */
4027 	m68ki_jump(m68ki_pull_32());
4028 }
4029 
4030 
m68k_op_sbcd_8_rr(void)4031 void m68k_op_sbcd_8_rr(void)
4032 {
4033 	uint* r_dst = &DX;
4034 	uint src = DY;
4035 	uint dst = *r_dst;
4036 	uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
4037 
4038 	FLAG_V = ~res; /* Undefined V behavior */
4039 
4040 	if(res > 9)
4041 		res -= 6;
4042 	res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
4043 	FLAG_X = FLAG_C = (res > 0x99) << 8;
4044 	if(FLAG_C)
4045 		res += 0xa0;
4046 
4047 	res = MASK_OUT_ABOVE_8(res);
4048 
4049 	FLAG_V &= res; /* Undefined V behavior part II */
4050 	FLAG_N = NFLAG_8(res); /* Undefined N behavior */
4051 	FLAG_Z |= res;
4052 
4053 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
4054 }
4055 
4056 
m68k_op_sbcd_8_mm_ax7(void)4057 void m68k_op_sbcd_8_mm_ax7(void)
4058 {
4059 	uint src = OPER_AY_PD_8();
4060 	uint ea  = EA_A7_PD_8();
4061 	uint dst = m68ki_read_8(ea);
4062 	uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
4063 
4064 	FLAG_V = ~res; /* Undefined V behavior */
4065 
4066 	if(res > 9)
4067 		res -= 6;
4068 	res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
4069 	FLAG_X = FLAG_C = (res > 0x99) << 8;
4070 	if(FLAG_C)
4071 		res += 0xa0;
4072 
4073 	res = MASK_OUT_ABOVE_8(res);
4074 
4075 	FLAG_V &= res; /* Undefined V behavior part II */
4076 	FLAG_N = NFLAG_8(res); /* Undefined N behavior */
4077 	FLAG_Z |= res;
4078 
4079 	m68ki_write_8(ea, res);
4080 }
4081 
4082 
m68k_op_sbcd_8_mm_ay7(void)4083 void m68k_op_sbcd_8_mm_ay7(void)
4084 {
4085 	uint src = OPER_A7_PD_8();
4086 	uint ea  = EA_AX_PD_8();
4087 	uint dst = m68ki_read_8(ea);
4088 	uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
4089 
4090 	FLAG_V = ~res; /* Undefined V behavior */
4091 
4092 	if(res > 9)
4093 		res -= 6;
4094 	res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
4095 	FLAG_X = FLAG_C = (res > 0x99) << 8;
4096 	if(FLAG_C)
4097 		res += 0xa0;
4098 
4099 	res = MASK_OUT_ABOVE_8(res);
4100 
4101 	FLAG_V &= res; /* Undefined V behavior part II */
4102 	FLAG_N = NFLAG_8(res); /* Undefined N behavior */
4103 	FLAG_Z |= res;
4104 
4105 	m68ki_write_8(ea, res);
4106 }
4107 
4108 
m68k_op_sbcd_8_mm_axy7(void)4109 void m68k_op_sbcd_8_mm_axy7(void)
4110 {
4111 	uint src = OPER_A7_PD_8();
4112 	uint ea  = EA_A7_PD_8();
4113 	uint dst = m68ki_read_8(ea);
4114 	uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
4115 
4116 	FLAG_V = ~res; /* Undefined V behavior */
4117 
4118 	if(res > 9)
4119 		res -= 6;
4120 	res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
4121 	FLAG_X = FLAG_C = (res > 0x99) << 8;
4122 	if(FLAG_C)
4123 		res += 0xa0;
4124 
4125 	res = MASK_OUT_ABOVE_8(res);
4126 
4127 	FLAG_V &= res; /* Undefined V behavior part II */
4128 	FLAG_N = NFLAG_8(res); /* Undefined N behavior */
4129 	FLAG_Z |= res;
4130 
4131 	m68ki_write_8(ea, res);
4132 }
4133 
4134 
m68k_op_sbcd_8_mm(void)4135 void m68k_op_sbcd_8_mm(void)
4136 {
4137 	uint src = OPER_AY_PD_8();
4138 	uint ea  = EA_AX_PD_8();
4139 	uint dst = m68ki_read_8(ea);
4140 	uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();
4141 
4142 	FLAG_V = ~res; /* Undefined V behavior */
4143 
4144 	if(res > 9)
4145 		res -= 6;
4146 	res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);
4147 	FLAG_X = FLAG_C = (res > 0x99) << 8;
4148 	if(FLAG_C)
4149 		res += 0xa0;
4150 
4151 	res = MASK_OUT_ABOVE_8(res);
4152 
4153 	FLAG_V &= res; /* Undefined V behavior part II */
4154 	FLAG_N = NFLAG_8(res); /* Undefined N behavior */
4155 	FLAG_Z |= res;
4156 
4157 	m68ki_write_8(ea, res);
4158 }
4159 
4160 
m68k_op_st_8_d(void)4161 void m68k_op_st_8_d(void)
4162 {
4163 	DY |= 0xff;
4164 }
4165 
4166 
m68k_op_st_8_ai(void)4167 void m68k_op_st_8_ai(void)
4168 {
4169 	m68ki_write_8(EA_AY_AI_8(), 0xff);
4170 }
4171 
4172 
m68k_op_st_8_pi(void)4173 void m68k_op_st_8_pi(void)
4174 {
4175 	m68ki_write_8(EA_AY_PI_8(), 0xff);
4176 }
4177 
4178 
m68k_op_st_8_pi7(void)4179 void m68k_op_st_8_pi7(void)
4180 {
4181 	m68ki_write_8(EA_A7_PI_8(), 0xff);
4182 }
4183 
4184 
m68k_op_st_8_pd(void)4185 void m68k_op_st_8_pd(void)
4186 {
4187 	m68ki_write_8(EA_AY_PD_8(), 0xff);
4188 }
4189 
4190 
m68k_op_st_8_pd7(void)4191 void m68k_op_st_8_pd7(void)
4192 {
4193 	m68ki_write_8(EA_A7_PD_8(), 0xff);
4194 }
4195 
4196 
m68k_op_st_8_di(void)4197 void m68k_op_st_8_di(void)
4198 {
4199 	m68ki_write_8(EA_AY_DI_8(), 0xff);
4200 }
4201 
4202 
m68k_op_st_8_ix(void)4203 void m68k_op_st_8_ix(void)
4204 {
4205 	m68ki_write_8(EA_AY_IX_8(), 0xff);
4206 }
4207 
4208 
m68k_op_st_8_aw(void)4209 void m68k_op_st_8_aw(void)
4210 {
4211 	m68ki_write_8(EA_AW_8(), 0xff);
4212 }
4213 
4214 
m68k_op_st_8_al(void)4215 void m68k_op_st_8_al(void)
4216 {
4217 	m68ki_write_8(EA_AL_8(), 0xff);
4218 }
4219 
4220 
m68k_op_sf_8_d(void)4221 void m68k_op_sf_8_d(void)
4222 {
4223 	DY &= 0xffffff00;
4224 }
4225 
4226 
m68k_op_sf_8_ai(void)4227 void m68k_op_sf_8_ai(void)
4228 {
4229 	m68ki_write_8(EA_AY_AI_8(), 0);
4230 }
4231 
4232 
m68k_op_sf_8_pi(void)4233 void m68k_op_sf_8_pi(void)
4234 {
4235 	m68ki_write_8(EA_AY_PI_8(), 0);
4236 }
4237 
4238 
m68k_op_sf_8_pi7(void)4239 void m68k_op_sf_8_pi7(void)
4240 {
4241 	m68ki_write_8(EA_A7_PI_8(), 0);
4242 }
4243 
4244 
m68k_op_sf_8_pd(void)4245 void m68k_op_sf_8_pd(void)
4246 {
4247 	m68ki_write_8(EA_AY_PD_8(), 0);
4248 }
4249 
4250 
m68k_op_sf_8_pd7(void)4251 void m68k_op_sf_8_pd7(void)
4252 {
4253 	m68ki_write_8(EA_A7_PD_8(), 0);
4254 }
4255 
4256 
m68k_op_sf_8_di(void)4257 void m68k_op_sf_8_di(void)
4258 {
4259 	m68ki_write_8(EA_AY_DI_8(), 0);
4260 }
4261 
4262 
m68k_op_sf_8_ix(void)4263 void m68k_op_sf_8_ix(void)
4264 {
4265 	m68ki_write_8(EA_AY_IX_8(), 0);
4266 }
4267 
4268 
m68k_op_sf_8_aw(void)4269 void m68k_op_sf_8_aw(void)
4270 {
4271 	m68ki_write_8(EA_AW_8(), 0);
4272 }
4273 
4274 
m68k_op_sf_8_al(void)4275 void m68k_op_sf_8_al(void)
4276 {
4277 	m68ki_write_8(EA_AL_8(), 0);
4278 }
4279 
4280 
m68k_op_shi_8_d(void)4281 void m68k_op_shi_8_d(void)
4282 {
4283 	if(COND_HI())
4284 	{
4285 		DY |= 0xff;
4286 		USE_CYCLES(CYC_SCC_R_TRUE);
4287 		return;
4288 	}
4289 	DY &= 0xffffff00;
4290 }
4291 
4292 
m68k_op_sls_8_d(void)4293 void m68k_op_sls_8_d(void)
4294 {
4295 	if(COND_LS())
4296 	{
4297 		DY |= 0xff;
4298 		USE_CYCLES(CYC_SCC_R_TRUE);
4299 		return;
4300 	}
4301 	DY &= 0xffffff00;
4302 }
4303 
4304 
m68k_op_scc_8_d(void)4305 void m68k_op_scc_8_d(void)
4306 {
4307 	if(COND_CC())
4308 	{
4309 		DY |= 0xff;
4310 		USE_CYCLES(CYC_SCC_R_TRUE);
4311 		return;
4312 	}
4313 	DY &= 0xffffff00;
4314 }
4315 
4316 
m68k_op_scs_8_d(void)4317 void m68k_op_scs_8_d(void)
4318 {
4319 	if(COND_CS())
4320 	{
4321 		DY |= 0xff;
4322 		USE_CYCLES(CYC_SCC_R_TRUE);
4323 		return;
4324 	}
4325 	DY &= 0xffffff00;
4326 }
4327 
4328 
m68k_op_sne_8_d(void)4329 void m68k_op_sne_8_d(void)
4330 {
4331 	if(COND_NE())
4332 	{
4333 		DY |= 0xff;
4334 		USE_CYCLES(CYC_SCC_R_TRUE);
4335 		return;
4336 	}
4337 	DY &= 0xffffff00;
4338 }
4339 
4340 
m68k_op_seq_8_d(void)4341 void m68k_op_seq_8_d(void)
4342 {
4343 	if(COND_EQ())
4344 	{
4345 		DY |= 0xff;
4346 		USE_CYCLES(CYC_SCC_R_TRUE);
4347 		return;
4348 	}
4349 	DY &= 0xffffff00;
4350 }
4351 
4352 
m68k_op_svc_8_d(void)4353 void m68k_op_svc_8_d(void)
4354 {
4355 	if(COND_VC())
4356 	{
4357 		DY |= 0xff;
4358 		USE_CYCLES(CYC_SCC_R_TRUE);
4359 		return;
4360 	}
4361 	DY &= 0xffffff00;
4362 }
4363 
4364 
m68k_op_svs_8_d(void)4365 void m68k_op_svs_8_d(void)
4366 {
4367 	if(COND_VS())
4368 	{
4369 		DY |= 0xff;
4370 		USE_CYCLES(CYC_SCC_R_TRUE);
4371 		return;
4372 	}
4373 	DY &= 0xffffff00;
4374 }
4375 
4376 
m68k_op_spl_8_d(void)4377 void m68k_op_spl_8_d(void)
4378 {
4379 	if(COND_PL())
4380 	{
4381 		DY |= 0xff;
4382 		USE_CYCLES(CYC_SCC_R_TRUE);
4383 		return;
4384 	}
4385 	DY &= 0xffffff00;
4386 }
4387 
4388 
m68k_op_smi_8_d(void)4389 void m68k_op_smi_8_d(void)
4390 {
4391 	if(COND_MI())
4392 	{
4393 		DY |= 0xff;
4394 		USE_CYCLES(CYC_SCC_R_TRUE);
4395 		return;
4396 	}
4397 	DY &= 0xffffff00;
4398 }
4399 
4400 
m68k_op_sge_8_d(void)4401 void m68k_op_sge_8_d(void)
4402 {
4403 	if(COND_GE())
4404 	{
4405 		DY |= 0xff;
4406 		USE_CYCLES(CYC_SCC_R_TRUE);
4407 		return;
4408 	}
4409 	DY &= 0xffffff00;
4410 }
4411 
4412 
m68k_op_slt_8_d(void)4413 void m68k_op_slt_8_d(void)
4414 {
4415 	if(COND_LT())
4416 	{
4417 		DY |= 0xff;
4418 		USE_CYCLES(CYC_SCC_R_TRUE);
4419 		return;
4420 	}
4421 	DY &= 0xffffff00;
4422 }
4423 
4424 
m68k_op_sgt_8_d(void)4425 void m68k_op_sgt_8_d(void)
4426 {
4427 	if(COND_GT())
4428 	{
4429 		DY |= 0xff;
4430 		USE_CYCLES(CYC_SCC_R_TRUE);
4431 		return;
4432 	}
4433 	DY &= 0xffffff00;
4434 }
4435 
4436 
m68k_op_sle_8_d(void)4437 void m68k_op_sle_8_d(void)
4438 {
4439 	if(COND_LE())
4440 	{
4441 		DY |= 0xff;
4442 		USE_CYCLES(CYC_SCC_R_TRUE);
4443 		return;
4444 	}
4445 	DY &= 0xffffff00;
4446 }
4447 
4448 
m68k_op_shi_8_ai(void)4449 void m68k_op_shi_8_ai(void)
4450 {
4451 	m68ki_write_8(EA_AY_AI_8(), COND_HI() ? 0xff : 0);
4452 }
4453 
4454 
m68k_op_shi_8_pi(void)4455 void m68k_op_shi_8_pi(void)
4456 {
4457 	m68ki_write_8(EA_AY_PI_8(), COND_HI() ? 0xff : 0);
4458 }
4459 
4460 
m68k_op_shi_8_pi7(void)4461 void m68k_op_shi_8_pi7(void)
4462 {
4463 	m68ki_write_8(EA_A7_PI_8(), COND_HI() ? 0xff : 0);
4464 }
4465 
4466 
m68k_op_shi_8_pd(void)4467 void m68k_op_shi_8_pd(void)
4468 {
4469 	m68ki_write_8(EA_AY_PD_8(), COND_HI() ? 0xff : 0);
4470 }
4471 
4472 
m68k_op_shi_8_pd7(void)4473 void m68k_op_shi_8_pd7(void)
4474 {
4475 	m68ki_write_8(EA_A7_PD_8(), COND_HI() ? 0xff : 0);
4476 }
4477 
4478 
m68k_op_shi_8_di(void)4479 void m68k_op_shi_8_di(void)
4480 {
4481 	m68ki_write_8(EA_AY_DI_8(), COND_HI() ? 0xff : 0);
4482 }
4483 
4484 
m68k_op_shi_8_ix(void)4485 void m68k_op_shi_8_ix(void)
4486 {
4487 	m68ki_write_8(EA_AY_IX_8(), COND_HI() ? 0xff : 0);
4488 }
4489 
4490 
m68k_op_shi_8_aw(void)4491 void m68k_op_shi_8_aw(void)
4492 {
4493 	m68ki_write_8(EA_AW_8(), COND_HI() ? 0xff : 0);
4494 }
4495 
4496 
m68k_op_shi_8_al(void)4497 void m68k_op_shi_8_al(void)
4498 {
4499 	m68ki_write_8(EA_AL_8(), COND_HI() ? 0xff : 0);
4500 }
4501 
4502 
m68k_op_sls_8_ai(void)4503 void m68k_op_sls_8_ai(void)
4504 {
4505 	m68ki_write_8(EA_AY_AI_8(), COND_LS() ? 0xff : 0);
4506 }
4507 
4508 
m68k_op_sls_8_pi(void)4509 void m68k_op_sls_8_pi(void)
4510 {
4511 	m68ki_write_8(EA_AY_PI_8(), COND_LS() ? 0xff : 0);
4512 }
4513 
4514 
m68k_op_sls_8_pi7(void)4515 void m68k_op_sls_8_pi7(void)
4516 {
4517 	m68ki_write_8(EA_A7_PI_8(), COND_LS() ? 0xff : 0);
4518 }
4519 
4520 
m68k_op_sls_8_pd(void)4521 void m68k_op_sls_8_pd(void)
4522 {
4523 	m68ki_write_8(EA_AY_PD_8(), COND_LS() ? 0xff : 0);
4524 }
4525 
4526 
m68k_op_sls_8_pd7(void)4527 void m68k_op_sls_8_pd7(void)
4528 {
4529 	m68ki_write_8(EA_A7_PD_8(), COND_LS() ? 0xff : 0);
4530 }
4531 
4532 
m68k_op_sls_8_di(void)4533 void m68k_op_sls_8_di(void)
4534 {
4535 	m68ki_write_8(EA_AY_DI_8(), COND_LS() ? 0xff : 0);
4536 }
4537 
4538 
m68k_op_sls_8_ix(void)4539 void m68k_op_sls_8_ix(void)
4540 {
4541 	m68ki_write_8(EA_AY_IX_8(), COND_LS() ? 0xff : 0);
4542 }
4543 
4544 
m68k_op_sls_8_aw(void)4545 void m68k_op_sls_8_aw(void)
4546 {
4547 	m68ki_write_8(EA_AW_8(), COND_LS() ? 0xff : 0);
4548 }
4549 
4550 
m68k_op_sls_8_al(void)4551 void m68k_op_sls_8_al(void)
4552 {
4553 	m68ki_write_8(EA_AL_8(), COND_LS() ? 0xff : 0);
4554 }
4555 
4556 
m68k_op_scc_8_ai(void)4557 void m68k_op_scc_8_ai(void)
4558 {
4559 	m68ki_write_8(EA_AY_AI_8(), COND_CC() ? 0xff : 0);
4560 }
4561 
4562 
m68k_op_scc_8_pi(void)4563 void m68k_op_scc_8_pi(void)
4564 {
4565 	m68ki_write_8(EA_AY_PI_8(), COND_CC() ? 0xff : 0);
4566 }
4567 
4568 
m68k_op_scc_8_pi7(void)4569 void m68k_op_scc_8_pi7(void)
4570 {
4571 	m68ki_write_8(EA_A7_PI_8(), COND_CC() ? 0xff : 0);
4572 }
4573 
4574 
m68k_op_scc_8_pd(void)4575 void m68k_op_scc_8_pd(void)
4576 {
4577 	m68ki_write_8(EA_AY_PD_8(), COND_CC() ? 0xff : 0);
4578 }
4579 
4580 
m68k_op_scc_8_pd7(void)4581 void m68k_op_scc_8_pd7(void)
4582 {
4583 	m68ki_write_8(EA_A7_PD_8(), COND_CC() ? 0xff : 0);
4584 }
4585 
4586 
m68k_op_scc_8_di(void)4587 void m68k_op_scc_8_di(void)
4588 {
4589 	m68ki_write_8(EA_AY_DI_8(), COND_CC() ? 0xff : 0);
4590 }
4591 
4592 
m68k_op_scc_8_ix(void)4593 void m68k_op_scc_8_ix(void)
4594 {
4595 	m68ki_write_8(EA_AY_IX_8(), COND_CC() ? 0xff : 0);
4596 }
4597 
4598 
m68k_op_scc_8_aw(void)4599 void m68k_op_scc_8_aw(void)
4600 {
4601 	m68ki_write_8(EA_AW_8(), COND_CC() ? 0xff : 0);
4602 }
4603 
4604 
m68k_op_scc_8_al(void)4605 void m68k_op_scc_8_al(void)
4606 {
4607 	m68ki_write_8(EA_AL_8(), COND_CC() ? 0xff : 0);
4608 }
4609 
4610 
m68k_op_scs_8_ai(void)4611 void m68k_op_scs_8_ai(void)
4612 {
4613 	m68ki_write_8(EA_AY_AI_8(), COND_CS() ? 0xff : 0);
4614 }
4615 
4616 
m68k_op_scs_8_pi(void)4617 void m68k_op_scs_8_pi(void)
4618 {
4619 	m68ki_write_8(EA_AY_PI_8(), COND_CS() ? 0xff : 0);
4620 }
4621 
4622 
m68k_op_scs_8_pi7(void)4623 void m68k_op_scs_8_pi7(void)
4624 {
4625 	m68ki_write_8(EA_A7_PI_8(), COND_CS() ? 0xff : 0);
4626 }
4627 
4628 
m68k_op_scs_8_pd(void)4629 void m68k_op_scs_8_pd(void)
4630 {
4631 	m68ki_write_8(EA_AY_PD_8(), COND_CS() ? 0xff : 0);
4632 }
4633 
4634 
m68k_op_scs_8_pd7(void)4635 void m68k_op_scs_8_pd7(void)
4636 {
4637 	m68ki_write_8(EA_A7_PD_8(), COND_CS() ? 0xff : 0);
4638 }
4639 
4640 
m68k_op_scs_8_di(void)4641 void m68k_op_scs_8_di(void)
4642 {
4643 	m68ki_write_8(EA_AY_DI_8(), COND_CS() ? 0xff : 0);
4644 }
4645 
4646 
m68k_op_scs_8_ix(void)4647 void m68k_op_scs_8_ix(void)
4648 {
4649 	m68ki_write_8(EA_AY_IX_8(), COND_CS() ? 0xff : 0);
4650 }
4651 
4652 
m68k_op_scs_8_aw(void)4653 void m68k_op_scs_8_aw(void)
4654 {
4655 	m68ki_write_8(EA_AW_8(), COND_CS() ? 0xff : 0);
4656 }
4657 
4658 
m68k_op_scs_8_al(void)4659 void m68k_op_scs_8_al(void)
4660 {
4661 	m68ki_write_8(EA_AL_8(), COND_CS() ? 0xff : 0);
4662 }
4663 
4664 
m68k_op_sne_8_ai(void)4665 void m68k_op_sne_8_ai(void)
4666 {
4667 	m68ki_write_8(EA_AY_AI_8(), COND_NE() ? 0xff : 0);
4668 }
4669 
4670 
m68k_op_sne_8_pi(void)4671 void m68k_op_sne_8_pi(void)
4672 {
4673 	m68ki_write_8(EA_AY_PI_8(), COND_NE() ? 0xff : 0);
4674 }
4675 
4676 
m68k_op_sne_8_pi7(void)4677 void m68k_op_sne_8_pi7(void)
4678 {
4679 	m68ki_write_8(EA_A7_PI_8(), COND_NE() ? 0xff : 0);
4680 }
4681 
4682 
m68k_op_sne_8_pd(void)4683 void m68k_op_sne_8_pd(void)
4684 {
4685 	m68ki_write_8(EA_AY_PD_8(), COND_NE() ? 0xff : 0);
4686 }
4687 
4688 
m68k_op_sne_8_pd7(void)4689 void m68k_op_sne_8_pd7(void)
4690 {
4691 	m68ki_write_8(EA_A7_PD_8(), COND_NE() ? 0xff : 0);
4692 }
4693 
4694 
m68k_op_sne_8_di(void)4695 void m68k_op_sne_8_di(void)
4696 {
4697 	m68ki_write_8(EA_AY_DI_8(), COND_NE() ? 0xff : 0);
4698 }
4699 
4700 
m68k_op_sne_8_ix(void)4701 void m68k_op_sne_8_ix(void)
4702 {
4703 	m68ki_write_8(EA_AY_IX_8(), COND_NE() ? 0xff : 0);
4704 }
4705 
4706 
m68k_op_sne_8_aw(void)4707 void m68k_op_sne_8_aw(void)
4708 {
4709 	m68ki_write_8(EA_AW_8(), COND_NE() ? 0xff : 0);
4710 }
4711 
4712 
m68k_op_sne_8_al(void)4713 void m68k_op_sne_8_al(void)
4714 {
4715 	m68ki_write_8(EA_AL_8(), COND_NE() ? 0xff : 0);
4716 }
4717 
4718 
m68k_op_seq_8_ai(void)4719 void m68k_op_seq_8_ai(void)
4720 {
4721 	m68ki_write_8(EA_AY_AI_8(), COND_EQ() ? 0xff : 0);
4722 }
4723 
4724 
m68k_op_seq_8_pi(void)4725 void m68k_op_seq_8_pi(void)
4726 {
4727 	m68ki_write_8(EA_AY_PI_8(), COND_EQ() ? 0xff : 0);
4728 }
4729 
4730 
m68k_op_seq_8_pi7(void)4731 void m68k_op_seq_8_pi7(void)
4732 {
4733 	m68ki_write_8(EA_A7_PI_8(), COND_EQ() ? 0xff : 0);
4734 }
4735 
4736 
m68k_op_seq_8_pd(void)4737 void m68k_op_seq_8_pd(void)
4738 {
4739 	m68ki_write_8(EA_AY_PD_8(), COND_EQ() ? 0xff : 0);
4740 }
4741 
4742 
m68k_op_seq_8_pd7(void)4743 void m68k_op_seq_8_pd7(void)
4744 {
4745 	m68ki_write_8(EA_A7_PD_8(), COND_EQ() ? 0xff : 0);
4746 }
4747 
4748 
m68k_op_seq_8_di(void)4749 void m68k_op_seq_8_di(void)
4750 {
4751 	m68ki_write_8(EA_AY_DI_8(), COND_EQ() ? 0xff : 0);
4752 }
4753 
4754 
m68k_op_seq_8_ix(void)4755 void m68k_op_seq_8_ix(void)
4756 {
4757 	m68ki_write_8(EA_AY_IX_8(), COND_EQ() ? 0xff : 0);
4758 }
4759 
4760 
m68k_op_seq_8_aw(void)4761 void m68k_op_seq_8_aw(void)
4762 {
4763 	m68ki_write_8(EA_AW_8(), COND_EQ() ? 0xff : 0);
4764 }
4765 
4766 
m68k_op_seq_8_al(void)4767 void m68k_op_seq_8_al(void)
4768 {
4769 	m68ki_write_8(EA_AL_8(), COND_EQ() ? 0xff : 0);
4770 }
4771 
4772 
m68k_op_svc_8_ai(void)4773 void m68k_op_svc_8_ai(void)
4774 {
4775 	m68ki_write_8(EA_AY_AI_8(), COND_VC() ? 0xff : 0);
4776 }
4777 
4778 
m68k_op_svc_8_pi(void)4779 void m68k_op_svc_8_pi(void)
4780 {
4781 	m68ki_write_8(EA_AY_PI_8(), COND_VC() ? 0xff : 0);
4782 }
4783 
4784 
m68k_op_svc_8_pi7(void)4785 void m68k_op_svc_8_pi7(void)
4786 {
4787 	m68ki_write_8(EA_A7_PI_8(), COND_VC() ? 0xff : 0);
4788 }
4789 
4790 
m68k_op_svc_8_pd(void)4791 void m68k_op_svc_8_pd(void)
4792 {
4793 	m68ki_write_8(EA_AY_PD_8(), COND_VC() ? 0xff : 0);
4794 }
4795 
4796 
m68k_op_svc_8_pd7(void)4797 void m68k_op_svc_8_pd7(void)
4798 {
4799 	m68ki_write_8(EA_A7_PD_8(), COND_VC() ? 0xff : 0);
4800 }
4801 
4802 
m68k_op_svc_8_di(void)4803 void m68k_op_svc_8_di(void)
4804 {
4805 	m68ki_write_8(EA_AY_DI_8(), COND_VC() ? 0xff : 0);
4806 }
4807 
4808 
m68k_op_svc_8_ix(void)4809 void m68k_op_svc_8_ix(void)
4810 {
4811 	m68ki_write_8(EA_AY_IX_8(), COND_VC() ? 0xff : 0);
4812 }
4813 
4814 
m68k_op_svc_8_aw(void)4815 void m68k_op_svc_8_aw(void)
4816 {
4817 	m68ki_write_8(EA_AW_8(), COND_VC() ? 0xff : 0);
4818 }
4819 
4820 
m68k_op_svc_8_al(void)4821 void m68k_op_svc_8_al(void)
4822 {
4823 	m68ki_write_8(EA_AL_8(), COND_VC() ? 0xff : 0);
4824 }
4825 
4826 
m68k_op_svs_8_ai(void)4827 void m68k_op_svs_8_ai(void)
4828 {
4829 	m68ki_write_8(EA_AY_AI_8(), COND_VS() ? 0xff : 0);
4830 }
4831 
4832 
m68k_op_svs_8_pi(void)4833 void m68k_op_svs_8_pi(void)
4834 {
4835 	m68ki_write_8(EA_AY_PI_8(), COND_VS() ? 0xff : 0);
4836 }
4837 
4838 
m68k_op_svs_8_pi7(void)4839 void m68k_op_svs_8_pi7(void)
4840 {
4841 	m68ki_write_8(EA_A7_PI_8(), COND_VS() ? 0xff : 0);
4842 }
4843 
4844 
m68k_op_svs_8_pd(void)4845 void m68k_op_svs_8_pd(void)
4846 {
4847 	m68ki_write_8(EA_AY_PD_8(), COND_VS() ? 0xff : 0);
4848 }
4849 
4850 
m68k_op_svs_8_pd7(void)4851 void m68k_op_svs_8_pd7(void)
4852 {
4853 	m68ki_write_8(EA_A7_PD_8(), COND_VS() ? 0xff : 0);
4854 }
4855 
4856 
m68k_op_svs_8_di(void)4857 void m68k_op_svs_8_di(void)
4858 {
4859 	m68ki_write_8(EA_AY_DI_8(), COND_VS() ? 0xff : 0);
4860 }
4861 
4862 
m68k_op_svs_8_ix(void)4863 void m68k_op_svs_8_ix(void)
4864 {
4865 	m68ki_write_8(EA_AY_IX_8(), COND_VS() ? 0xff : 0);
4866 }
4867 
4868 
m68k_op_svs_8_aw(void)4869 void m68k_op_svs_8_aw(void)
4870 {
4871 	m68ki_write_8(EA_AW_8(), COND_VS() ? 0xff : 0);
4872 }
4873 
4874 
m68k_op_svs_8_al(void)4875 void m68k_op_svs_8_al(void)
4876 {
4877 	m68ki_write_8(EA_AL_8(), COND_VS() ? 0xff : 0);
4878 }
4879 
4880 
m68k_op_spl_8_ai(void)4881 void m68k_op_spl_8_ai(void)
4882 {
4883 	m68ki_write_8(EA_AY_AI_8(), COND_PL() ? 0xff : 0);
4884 }
4885 
4886 
m68k_op_spl_8_pi(void)4887 void m68k_op_spl_8_pi(void)
4888 {
4889 	m68ki_write_8(EA_AY_PI_8(), COND_PL() ? 0xff : 0);
4890 }
4891 
4892 
m68k_op_spl_8_pi7(void)4893 void m68k_op_spl_8_pi7(void)
4894 {
4895 	m68ki_write_8(EA_A7_PI_8(), COND_PL() ? 0xff : 0);
4896 }
4897 
4898 
m68k_op_spl_8_pd(void)4899 void m68k_op_spl_8_pd(void)
4900 {
4901 	m68ki_write_8(EA_AY_PD_8(), COND_PL() ? 0xff : 0);
4902 }
4903 
4904 
m68k_op_spl_8_pd7(void)4905 void m68k_op_spl_8_pd7(void)
4906 {
4907 	m68ki_write_8(EA_A7_PD_8(), COND_PL() ? 0xff : 0);
4908 }
4909 
4910 
m68k_op_spl_8_di(void)4911 void m68k_op_spl_8_di(void)
4912 {
4913 	m68ki_write_8(EA_AY_DI_8(), COND_PL() ? 0xff : 0);
4914 }
4915 
4916 
m68k_op_spl_8_ix(void)4917 void m68k_op_spl_8_ix(void)
4918 {
4919 	m68ki_write_8(EA_AY_IX_8(), COND_PL() ? 0xff : 0);
4920 }
4921 
4922 
m68k_op_spl_8_aw(void)4923 void m68k_op_spl_8_aw(void)
4924 {
4925 	m68ki_write_8(EA_AW_8(), COND_PL() ? 0xff : 0);
4926 }
4927 
4928 
m68k_op_spl_8_al(void)4929 void m68k_op_spl_8_al(void)
4930 {
4931 	m68ki_write_8(EA_AL_8(), COND_PL() ? 0xff : 0);
4932 }
4933 
4934 
m68k_op_smi_8_ai(void)4935 void m68k_op_smi_8_ai(void)
4936 {
4937 	m68ki_write_8(EA_AY_AI_8(), COND_MI() ? 0xff : 0);
4938 }
4939 
4940 
m68k_op_smi_8_pi(void)4941 void m68k_op_smi_8_pi(void)
4942 {
4943 	m68ki_write_8(EA_AY_PI_8(), COND_MI() ? 0xff : 0);
4944 }
4945 
4946 
m68k_op_smi_8_pi7(void)4947 void m68k_op_smi_8_pi7(void)
4948 {
4949 	m68ki_write_8(EA_A7_PI_8(), COND_MI() ? 0xff : 0);
4950 }
4951 
4952 
m68k_op_smi_8_pd(void)4953 void m68k_op_smi_8_pd(void)
4954 {
4955 	m68ki_write_8(EA_AY_PD_8(), COND_MI() ? 0xff : 0);
4956 }
4957 
4958 
m68k_op_smi_8_pd7(void)4959 void m68k_op_smi_8_pd7(void)
4960 {
4961 	m68ki_write_8(EA_A7_PD_8(), COND_MI() ? 0xff : 0);
4962 }
4963 
4964 
m68k_op_smi_8_di(void)4965 void m68k_op_smi_8_di(void)
4966 {
4967 	m68ki_write_8(EA_AY_DI_8(), COND_MI() ? 0xff : 0);
4968 }
4969 
4970 
m68k_op_smi_8_ix(void)4971 void m68k_op_smi_8_ix(void)
4972 {
4973 	m68ki_write_8(EA_AY_IX_8(), COND_MI() ? 0xff : 0);
4974 }
4975 
4976 
m68k_op_smi_8_aw(void)4977 void m68k_op_smi_8_aw(void)
4978 {
4979 	m68ki_write_8(EA_AW_8(), COND_MI() ? 0xff : 0);
4980 }
4981 
4982 
m68k_op_smi_8_al(void)4983 void m68k_op_smi_8_al(void)
4984 {
4985 	m68ki_write_8(EA_AL_8(), COND_MI() ? 0xff : 0);
4986 }
4987 
4988 
m68k_op_sge_8_ai(void)4989 void m68k_op_sge_8_ai(void)
4990 {
4991 	m68ki_write_8(EA_AY_AI_8(), COND_GE() ? 0xff : 0);
4992 }
4993 
4994 
m68k_op_sge_8_pi(void)4995 void m68k_op_sge_8_pi(void)
4996 {
4997 	m68ki_write_8(EA_AY_PI_8(), COND_GE() ? 0xff : 0);
4998 }
4999 
5000 
m68k_op_sge_8_pi7(void)5001 void m68k_op_sge_8_pi7(void)
5002 {
5003 	m68ki_write_8(EA_A7_PI_8(), COND_GE() ? 0xff : 0);
5004 }
5005 
5006 
m68k_op_sge_8_pd(void)5007 void m68k_op_sge_8_pd(void)
5008 {
5009 	m68ki_write_8(EA_AY_PD_8(), COND_GE() ? 0xff : 0);
5010 }
5011 
5012 
m68k_op_sge_8_pd7(void)5013 void m68k_op_sge_8_pd7(void)
5014 {
5015 	m68ki_write_8(EA_A7_PD_8(), COND_GE() ? 0xff : 0);
5016 }
5017 
5018 
m68k_op_sge_8_di(void)5019 void m68k_op_sge_8_di(void)
5020 {
5021 	m68ki_write_8(EA_AY_DI_8(), COND_GE() ? 0xff : 0);
5022 }
5023 
5024 
m68k_op_sge_8_ix(void)5025 void m68k_op_sge_8_ix(void)
5026 {
5027 	m68ki_write_8(EA_AY_IX_8(), COND_GE() ? 0xff : 0);
5028 }
5029 
5030 
m68k_op_sge_8_aw(void)5031 void m68k_op_sge_8_aw(void)
5032 {
5033 	m68ki_write_8(EA_AW_8(), COND_GE() ? 0xff : 0);
5034 }
5035 
5036 
m68k_op_sge_8_al(void)5037 void m68k_op_sge_8_al(void)
5038 {
5039 	m68ki_write_8(EA_AL_8(), COND_GE() ? 0xff : 0);
5040 }
5041 
5042 
m68k_op_slt_8_ai(void)5043 void m68k_op_slt_8_ai(void)
5044 {
5045 	m68ki_write_8(EA_AY_AI_8(), COND_LT() ? 0xff : 0);
5046 }
5047 
5048 
m68k_op_slt_8_pi(void)5049 void m68k_op_slt_8_pi(void)
5050 {
5051 	m68ki_write_8(EA_AY_PI_8(), COND_LT() ? 0xff : 0);
5052 }
5053 
5054 
m68k_op_slt_8_pi7(void)5055 void m68k_op_slt_8_pi7(void)
5056 {
5057 	m68ki_write_8(EA_A7_PI_8(), COND_LT() ? 0xff : 0);
5058 }
5059 
5060 
m68k_op_slt_8_pd(void)5061 void m68k_op_slt_8_pd(void)
5062 {
5063 	m68ki_write_8(EA_AY_PD_8(), COND_LT() ? 0xff : 0);
5064 }
5065 
5066 
m68k_op_slt_8_pd7(void)5067 void m68k_op_slt_8_pd7(void)
5068 {
5069 	m68ki_write_8(EA_A7_PD_8(), COND_LT() ? 0xff : 0);
5070 }
5071 
5072 
m68k_op_slt_8_di(void)5073 void m68k_op_slt_8_di(void)
5074 {
5075 	m68ki_write_8(EA_AY_DI_8(), COND_LT() ? 0xff : 0);
5076 }
5077 
5078 
m68k_op_slt_8_ix(void)5079 void m68k_op_slt_8_ix(void)
5080 {
5081 	m68ki_write_8(EA_AY_IX_8(), COND_LT() ? 0xff : 0);
5082 }
5083 
5084 
m68k_op_slt_8_aw(void)5085 void m68k_op_slt_8_aw(void)
5086 {
5087 	m68ki_write_8(EA_AW_8(), COND_LT() ? 0xff : 0);
5088 }
5089 
5090 
m68k_op_slt_8_al(void)5091 void m68k_op_slt_8_al(void)
5092 {
5093 	m68ki_write_8(EA_AL_8(), COND_LT() ? 0xff : 0);
5094 }
5095 
5096 
m68k_op_sgt_8_ai(void)5097 void m68k_op_sgt_8_ai(void)
5098 {
5099 	m68ki_write_8(EA_AY_AI_8(), COND_GT() ? 0xff : 0);
5100 }
5101 
5102 
m68k_op_sgt_8_pi(void)5103 void m68k_op_sgt_8_pi(void)
5104 {
5105 	m68ki_write_8(EA_AY_PI_8(), COND_GT() ? 0xff : 0);
5106 }
5107 
5108 
m68k_op_sgt_8_pi7(void)5109 void m68k_op_sgt_8_pi7(void)
5110 {
5111 	m68ki_write_8(EA_A7_PI_8(), COND_GT() ? 0xff : 0);
5112 }
5113 
5114 
m68k_op_sgt_8_pd(void)5115 void m68k_op_sgt_8_pd(void)
5116 {
5117 	m68ki_write_8(EA_AY_PD_8(), COND_GT() ? 0xff : 0);
5118 }
5119 
5120 
m68k_op_sgt_8_pd7(void)5121 void m68k_op_sgt_8_pd7(void)
5122 {
5123 	m68ki_write_8(EA_A7_PD_8(), COND_GT() ? 0xff : 0);
5124 }
5125 
5126 
m68k_op_sgt_8_di(void)5127 void m68k_op_sgt_8_di(void)
5128 {
5129 	m68ki_write_8(EA_AY_DI_8(), COND_GT() ? 0xff : 0);
5130 }
5131 
5132 
m68k_op_sgt_8_ix(void)5133 void m68k_op_sgt_8_ix(void)
5134 {
5135 	m68ki_write_8(EA_AY_IX_8(), COND_GT() ? 0xff : 0);
5136 }
5137 
5138 
m68k_op_sgt_8_aw(void)5139 void m68k_op_sgt_8_aw(void)
5140 {
5141 	m68ki_write_8(EA_AW_8(), COND_GT() ? 0xff : 0);
5142 }
5143 
5144 
m68k_op_sgt_8_al(void)5145 void m68k_op_sgt_8_al(void)
5146 {
5147 	m68ki_write_8(EA_AL_8(), COND_GT() ? 0xff : 0);
5148 }
5149 
5150 
m68k_op_sle_8_ai(void)5151 void m68k_op_sle_8_ai(void)
5152 {
5153 	m68ki_write_8(EA_AY_AI_8(), COND_LE() ? 0xff : 0);
5154 }
5155 
5156 
m68k_op_sle_8_pi(void)5157 void m68k_op_sle_8_pi(void)
5158 {
5159 	m68ki_write_8(EA_AY_PI_8(), COND_LE() ? 0xff : 0);
5160 }
5161 
5162 
m68k_op_sle_8_pi7(void)5163 void m68k_op_sle_8_pi7(void)
5164 {
5165 	m68ki_write_8(EA_A7_PI_8(), COND_LE() ? 0xff : 0);
5166 }
5167 
5168 
m68k_op_sle_8_pd(void)5169 void m68k_op_sle_8_pd(void)
5170 {
5171 	m68ki_write_8(EA_AY_PD_8(), COND_LE() ? 0xff : 0);
5172 }
5173 
5174 
m68k_op_sle_8_pd7(void)5175 void m68k_op_sle_8_pd7(void)
5176 {
5177 	m68ki_write_8(EA_A7_PD_8(), COND_LE() ? 0xff : 0);
5178 }
5179 
5180 
m68k_op_sle_8_di(void)5181 void m68k_op_sle_8_di(void)
5182 {
5183 	m68ki_write_8(EA_AY_DI_8(), COND_LE() ? 0xff : 0);
5184 }
5185 
5186 
m68k_op_sle_8_ix(void)5187 void m68k_op_sle_8_ix(void)
5188 {
5189 	m68ki_write_8(EA_AY_IX_8(), COND_LE() ? 0xff : 0);
5190 }
5191 
5192 
m68k_op_sle_8_aw(void)5193 void m68k_op_sle_8_aw(void)
5194 {
5195 	m68ki_write_8(EA_AW_8(), COND_LE() ? 0xff : 0);
5196 }
5197 
5198 
m68k_op_sle_8_al(void)5199 void m68k_op_sle_8_al(void)
5200 {
5201 	m68ki_write_8(EA_AL_8(), COND_LE() ? 0xff : 0);
5202 }
5203 
5204 
m68k_op_stop(void)5205 void m68k_op_stop(void)
5206 {
5207 	if(FLAG_S)
5208 	{
5209 		uint new_sr = OPER_I_16();
5210 		m68ki_trace_t0();			   /* auto-disable (see m68kcpu.h) */
5211 		CPU_STOPPED |= STOP_LEVEL_STOP;
5212 		m68ki_set_sr(new_sr);
5213 		m68ki_remaining_cycles = 0;
5214 		return;
5215 	}
5216 	m68ki_exception_privilege_violation();
5217 }
5218 
5219 
m68k_op_sub_8_er_d(void)5220 void m68k_op_sub_8_er_d(void)
5221 {
5222 	uint* r_dst = &DX;
5223 	uint src = MASK_OUT_ABOVE_8(DY);
5224 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5225 	uint res = dst - src;
5226 
5227 	FLAG_N = NFLAG_8(res);
5228 	FLAG_X = FLAG_C = CFLAG_8(res);
5229 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5230 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5231 
5232 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5233 }
5234 
5235 
m68k_op_sub_8_er_ai(void)5236 void m68k_op_sub_8_er_ai(void)
5237 {
5238 	uint* r_dst = &DX;
5239 	uint src = OPER_AY_AI_8();
5240 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5241 	uint res = dst - src;
5242 
5243 	FLAG_N = NFLAG_8(res);
5244 	FLAG_X = FLAG_C = CFLAG_8(res);
5245 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5246 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5247 
5248 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5249 }
5250 
5251 
m68k_op_sub_8_er_pi(void)5252 void m68k_op_sub_8_er_pi(void)
5253 {
5254 	uint* r_dst = &DX;
5255 	uint src = OPER_AY_PI_8();
5256 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5257 	uint res = dst - src;
5258 
5259 	FLAG_N = NFLAG_8(res);
5260 	FLAG_X = FLAG_C = CFLAG_8(res);
5261 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5262 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5263 
5264 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5265 }
5266 
5267 
m68k_op_sub_8_er_pi7(void)5268 void m68k_op_sub_8_er_pi7(void)
5269 {
5270 	uint* r_dst = &DX;
5271 	uint src = OPER_A7_PI_8();
5272 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5273 	uint res = dst - src;
5274 
5275 	FLAG_N = NFLAG_8(res);
5276 	FLAG_X = FLAG_C = CFLAG_8(res);
5277 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5278 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5279 
5280 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5281 }
5282 
5283 
m68k_op_sub_8_er_pd(void)5284 void m68k_op_sub_8_er_pd(void)
5285 {
5286 	uint* r_dst = &DX;
5287 	uint src = OPER_AY_PD_8();
5288 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5289 	uint res = dst - src;
5290 
5291 	FLAG_N = NFLAG_8(res);
5292 	FLAG_X = FLAG_C = CFLAG_8(res);
5293 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5294 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5295 
5296 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5297 }
5298 
5299 
m68k_op_sub_8_er_pd7(void)5300 void m68k_op_sub_8_er_pd7(void)
5301 {
5302 	uint* r_dst = &DX;
5303 	uint src = OPER_A7_PD_8();
5304 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5305 	uint res = dst - src;
5306 
5307 	FLAG_N = NFLAG_8(res);
5308 	FLAG_X = FLAG_C = CFLAG_8(res);
5309 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5310 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5311 
5312 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5313 }
5314 
5315 
m68k_op_sub_8_er_di(void)5316 void m68k_op_sub_8_er_di(void)
5317 {
5318 	uint* r_dst = &DX;
5319 	uint src = OPER_AY_DI_8();
5320 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5321 	uint res = dst - src;
5322 
5323 	FLAG_N = NFLAG_8(res);
5324 	FLAG_X = FLAG_C = CFLAG_8(res);
5325 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5326 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5327 
5328 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5329 }
5330 
5331 
m68k_op_sub_8_er_ix(void)5332 void m68k_op_sub_8_er_ix(void)
5333 {
5334 	uint* r_dst = &DX;
5335 	uint src = OPER_AY_IX_8();
5336 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5337 	uint res = dst - src;
5338 
5339 	FLAG_N = NFLAG_8(res);
5340 	FLAG_X = FLAG_C = CFLAG_8(res);
5341 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5342 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5343 
5344 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5345 }
5346 
5347 
m68k_op_sub_8_er_aw(void)5348 void m68k_op_sub_8_er_aw(void)
5349 {
5350 	uint* r_dst = &DX;
5351 	uint src = OPER_AW_8();
5352 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5353 	uint res = dst - src;
5354 
5355 	FLAG_N = NFLAG_8(res);
5356 	FLAG_X = FLAG_C = CFLAG_8(res);
5357 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5358 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5359 
5360 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5361 }
5362 
5363 
m68k_op_sub_8_er_al(void)5364 void m68k_op_sub_8_er_al(void)
5365 {
5366 	uint* r_dst = &DX;
5367 	uint src = OPER_AL_8();
5368 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5369 	uint res = dst - src;
5370 
5371 	FLAG_N = NFLAG_8(res);
5372 	FLAG_X = FLAG_C = CFLAG_8(res);
5373 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5374 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5375 
5376 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5377 }
5378 
5379 
m68k_op_sub_8_er_pcdi(void)5380 void m68k_op_sub_8_er_pcdi(void)
5381 {
5382 	uint* r_dst = &DX;
5383 	uint src = OPER_PCDI_8();
5384 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5385 	uint res = dst - src;
5386 
5387 	FLAG_N = NFLAG_8(res);
5388 	FLAG_X = FLAG_C = CFLAG_8(res);
5389 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5390 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5391 
5392 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5393 }
5394 
5395 
m68k_op_sub_8_er_pcix(void)5396 void m68k_op_sub_8_er_pcix(void)
5397 {
5398 	uint* r_dst = &DX;
5399 	uint src = OPER_PCIX_8();
5400 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5401 	uint res = dst - src;
5402 
5403 	FLAG_N = NFLAG_8(res);
5404 	FLAG_X = FLAG_C = CFLAG_8(res);
5405 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5406 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5407 
5408 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5409 }
5410 
5411 
m68k_op_sub_8_er_i(void)5412 void m68k_op_sub_8_er_i(void)
5413 {
5414 	uint* r_dst = &DX;
5415 	uint src = OPER_I_8();
5416 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
5417 	uint res = dst - src;
5418 
5419 	FLAG_N = NFLAG_8(res);
5420 	FLAG_X = FLAG_C = CFLAG_8(res);
5421 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5422 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5423 
5424 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
5425 }
5426 
5427 
m68k_op_sub_16_er_d(void)5428 void m68k_op_sub_16_er_d(void)
5429 {
5430 	uint* r_dst = &DX;
5431 	uint src = MASK_OUT_ABOVE_16(DY);
5432 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5433 	uint res = dst - src;
5434 
5435 	FLAG_N = NFLAG_16(res);
5436 	FLAG_X = FLAG_C = CFLAG_16(res);
5437 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5438 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5439 
5440 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5441 }
5442 
5443 
m68k_op_sub_16_er_a(void)5444 void m68k_op_sub_16_er_a(void)
5445 {
5446 	uint* r_dst = &DX;
5447 	uint src = MASK_OUT_ABOVE_16(AY);
5448 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5449 	uint res = dst - src;
5450 
5451 	FLAG_N = NFLAG_16(res);
5452 	FLAG_X = FLAG_C = CFLAG_16(res);
5453 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5454 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5455 
5456 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5457 }
5458 
5459 
m68k_op_sub_16_er_ai(void)5460 void m68k_op_sub_16_er_ai(void)
5461 {
5462 	uint* r_dst = &DX;
5463 	uint src = OPER_AY_AI_16();
5464 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5465 	uint res = dst - src;
5466 
5467 	FLAG_N = NFLAG_16(res);
5468 	FLAG_X = FLAG_C = CFLAG_16(res);
5469 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5470 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5471 
5472 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5473 }
5474 
5475 
m68k_op_sub_16_er_pi(void)5476 void m68k_op_sub_16_er_pi(void)
5477 {
5478 	uint* r_dst = &DX;
5479 	uint src = OPER_AY_PI_16();
5480 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5481 	uint res = dst - src;
5482 
5483 	FLAG_N = NFLAG_16(res);
5484 	FLAG_X = FLAG_C = CFLAG_16(res);
5485 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5486 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5487 
5488 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5489 }
5490 
5491 
m68k_op_sub_16_er_pd(void)5492 void m68k_op_sub_16_er_pd(void)
5493 {
5494 	uint* r_dst = &DX;
5495 	uint src = OPER_AY_PD_16();
5496 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5497 	uint res = dst - src;
5498 
5499 	FLAG_N = NFLAG_16(res);
5500 	FLAG_X = FLAG_C = CFLAG_16(res);
5501 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5502 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5503 
5504 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5505 }
5506 
5507 
m68k_op_sub_16_er_di(void)5508 void m68k_op_sub_16_er_di(void)
5509 {
5510 	uint* r_dst = &DX;
5511 	uint src = OPER_AY_DI_16();
5512 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5513 	uint res = dst - src;
5514 
5515 	FLAG_N = NFLAG_16(res);
5516 	FLAG_X = FLAG_C = CFLAG_16(res);
5517 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5518 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5519 
5520 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5521 }
5522 
5523 
m68k_op_sub_16_er_ix(void)5524 void m68k_op_sub_16_er_ix(void)
5525 {
5526 	uint* r_dst = &DX;
5527 	uint src = OPER_AY_IX_16();
5528 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5529 	uint res = dst - src;
5530 
5531 	FLAG_N = NFLAG_16(res);
5532 	FLAG_X = FLAG_C = CFLAG_16(res);
5533 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5534 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5535 
5536 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5537 }
5538 
5539 
m68k_op_sub_16_er_aw(void)5540 void m68k_op_sub_16_er_aw(void)
5541 {
5542 	uint* r_dst = &DX;
5543 	uint src = OPER_AW_16();
5544 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5545 	uint res = dst - src;
5546 
5547 	FLAG_N = NFLAG_16(res);
5548 	FLAG_X = FLAG_C = CFLAG_16(res);
5549 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5550 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5551 
5552 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5553 }
5554 
5555 
m68k_op_sub_16_er_al(void)5556 void m68k_op_sub_16_er_al(void)
5557 {
5558 	uint* r_dst = &DX;
5559 	uint src = OPER_AL_16();
5560 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5561 	uint res = dst - src;
5562 
5563 	FLAG_N = NFLAG_16(res);
5564 	FLAG_X = FLAG_C = CFLAG_16(res);
5565 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5566 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5567 
5568 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5569 }
5570 
5571 
m68k_op_sub_16_er_pcdi(void)5572 void m68k_op_sub_16_er_pcdi(void)
5573 {
5574 	uint* r_dst = &DX;
5575 	uint src = OPER_PCDI_16();
5576 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5577 	uint res = dst - src;
5578 
5579 	FLAG_N = NFLAG_16(res);
5580 	FLAG_X = FLAG_C = CFLAG_16(res);
5581 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5582 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5583 
5584 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5585 }
5586 
5587 
m68k_op_sub_16_er_pcix(void)5588 void m68k_op_sub_16_er_pcix(void)
5589 {
5590 	uint* r_dst = &DX;
5591 	uint src = OPER_PCIX_16();
5592 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5593 	uint res = dst - src;
5594 
5595 	FLAG_N = NFLAG_16(res);
5596 	FLAG_X = FLAG_C = CFLAG_16(res);
5597 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5598 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5599 
5600 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5601 }
5602 
5603 
m68k_op_sub_16_er_i(void)5604 void m68k_op_sub_16_er_i(void)
5605 {
5606 	uint* r_dst = &DX;
5607 	uint src = OPER_I_16();
5608 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
5609 	uint res = dst - src;
5610 
5611 	FLAG_N = NFLAG_16(res);
5612 	FLAG_X = FLAG_C = CFLAG_16(res);
5613 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5614 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5615 
5616 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
5617 }
5618 
5619 
m68k_op_sub_32_er_d(void)5620 void m68k_op_sub_32_er_d(void)
5621 {
5622 	uint* r_dst = &DX;
5623 	uint src = DY;
5624 	uint dst = *r_dst;
5625 	uint res = dst - src;
5626 
5627 	FLAG_N = NFLAG_32(res);
5628 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5629 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5630 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5631 
5632 	*r_dst = FLAG_Z;
5633 }
5634 
5635 
m68k_op_sub_32_er_a(void)5636 void m68k_op_sub_32_er_a(void)
5637 {
5638 	uint* r_dst = &DX;
5639 	uint src = AY;
5640 	uint dst = *r_dst;
5641 	uint res = dst - src;
5642 
5643 	FLAG_N = NFLAG_32(res);
5644 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5645 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5646 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5647 
5648 	*r_dst = FLAG_Z;
5649 }
5650 
5651 
m68k_op_sub_32_er_ai(void)5652 void m68k_op_sub_32_er_ai(void)
5653 {
5654 	uint* r_dst = &DX;
5655 	uint src = OPER_AY_AI_32();
5656 	uint dst = *r_dst;
5657 	uint res = dst - src;
5658 
5659 	FLAG_N = NFLAG_32(res);
5660 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5661 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5662 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5663 
5664 	*r_dst = FLAG_Z;
5665 }
5666 
5667 
m68k_op_sub_32_er_pi(void)5668 void m68k_op_sub_32_er_pi(void)
5669 {
5670 	uint* r_dst = &DX;
5671 	uint src = OPER_AY_PI_32();
5672 	uint dst = *r_dst;
5673 	uint res = dst - src;
5674 
5675 	FLAG_N = NFLAG_32(res);
5676 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5677 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5678 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5679 
5680 	*r_dst = FLAG_Z;
5681 }
5682 
5683 
m68k_op_sub_32_er_pd(void)5684 void m68k_op_sub_32_er_pd(void)
5685 {
5686 	uint* r_dst = &DX;
5687 	uint src = OPER_AY_PD_32();
5688 	uint dst = *r_dst;
5689 	uint res = dst - src;
5690 
5691 	FLAG_N = NFLAG_32(res);
5692 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5693 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5694 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5695 
5696 	*r_dst = FLAG_Z;
5697 }
5698 
5699 
m68k_op_sub_32_er_di(void)5700 void m68k_op_sub_32_er_di(void)
5701 {
5702 	uint* r_dst = &DX;
5703 	uint src = OPER_AY_DI_32();
5704 	uint dst = *r_dst;
5705 	uint res = dst - src;
5706 
5707 	FLAG_N = NFLAG_32(res);
5708 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5709 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5710 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5711 
5712 	*r_dst = FLAG_Z;
5713 }
5714 
5715 
m68k_op_sub_32_er_ix(void)5716 void m68k_op_sub_32_er_ix(void)
5717 {
5718 	uint* r_dst = &DX;
5719 	uint src = OPER_AY_IX_32();
5720 	uint dst = *r_dst;
5721 	uint res = dst - src;
5722 
5723 	FLAG_N = NFLAG_32(res);
5724 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5725 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5726 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5727 
5728 	*r_dst = FLAG_Z;
5729 }
5730 
5731 
m68k_op_sub_32_er_aw(void)5732 void m68k_op_sub_32_er_aw(void)
5733 {
5734 	uint* r_dst = &DX;
5735 	uint src = OPER_AW_32();
5736 	uint dst = *r_dst;
5737 	uint res = dst - src;
5738 
5739 	FLAG_N = NFLAG_32(res);
5740 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5741 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5742 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5743 
5744 	*r_dst = FLAG_Z;
5745 }
5746 
5747 
m68k_op_sub_32_er_al(void)5748 void m68k_op_sub_32_er_al(void)
5749 {
5750 	uint* r_dst = &DX;
5751 	uint src = OPER_AL_32();
5752 	uint dst = *r_dst;
5753 	uint res = dst - src;
5754 
5755 	FLAG_N = NFLAG_32(res);
5756 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5757 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5758 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5759 
5760 	*r_dst = FLAG_Z;
5761 }
5762 
5763 
m68k_op_sub_32_er_pcdi(void)5764 void m68k_op_sub_32_er_pcdi(void)
5765 {
5766 	uint* r_dst = &DX;
5767 	uint src = OPER_PCDI_32();
5768 	uint dst = *r_dst;
5769 	uint res = dst - src;
5770 
5771 	FLAG_N = NFLAG_32(res);
5772 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5773 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5774 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5775 
5776 	*r_dst = FLAG_Z;
5777 }
5778 
5779 
m68k_op_sub_32_er_pcix(void)5780 void m68k_op_sub_32_er_pcix(void)
5781 {
5782 	uint* r_dst = &DX;
5783 	uint src = OPER_PCIX_32();
5784 	uint dst = *r_dst;
5785 	uint res = dst - src;
5786 
5787 	FLAG_N = NFLAG_32(res);
5788 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5789 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5790 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5791 
5792 	*r_dst = FLAG_Z;
5793 }
5794 
5795 
m68k_op_sub_32_er_i(void)5796 void m68k_op_sub_32_er_i(void)
5797 {
5798 	uint* r_dst = &DX;
5799 	uint src = OPER_I_32();
5800 	uint dst = *r_dst;
5801 	uint res = dst - src;
5802 
5803 	FLAG_N = NFLAG_32(res);
5804 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
5805 	FLAG_V = VFLAG_SUB_32(src, dst, res);
5806 	FLAG_Z = MASK_OUT_ABOVE_32(res);
5807 
5808 	*r_dst = FLAG_Z;
5809 }
5810 
5811 
m68k_op_sub_8_re_ai(void)5812 void m68k_op_sub_8_re_ai(void)
5813 {
5814 	uint ea = EA_AY_AI_8();
5815 	uint src = MASK_OUT_ABOVE_8(DX);
5816 	uint dst = m68ki_read_8(ea);
5817 	uint res = dst - src;
5818 
5819 	FLAG_N = NFLAG_8(res);
5820 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5821 	FLAG_X = FLAG_C = CFLAG_8(res);
5822 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5823 
5824 	m68ki_write_8(ea, FLAG_Z);
5825 }
5826 
5827 
m68k_op_sub_8_re_pi(void)5828 void m68k_op_sub_8_re_pi(void)
5829 {
5830 	uint ea = EA_AY_PI_8();
5831 	uint src = MASK_OUT_ABOVE_8(DX);
5832 	uint dst = m68ki_read_8(ea);
5833 	uint res = dst - src;
5834 
5835 	FLAG_N = NFLAG_8(res);
5836 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5837 	FLAG_X = FLAG_C = CFLAG_8(res);
5838 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5839 
5840 	m68ki_write_8(ea, FLAG_Z);
5841 }
5842 
5843 
m68k_op_sub_8_re_pi7(void)5844 void m68k_op_sub_8_re_pi7(void)
5845 {
5846 	uint ea = EA_A7_PI_8();
5847 	uint src = MASK_OUT_ABOVE_8(DX);
5848 	uint dst = m68ki_read_8(ea);
5849 	uint res = dst - src;
5850 
5851 	FLAG_N = NFLAG_8(res);
5852 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5853 	FLAG_X = FLAG_C = CFLAG_8(res);
5854 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5855 
5856 	m68ki_write_8(ea, FLAG_Z);
5857 }
5858 
5859 
m68k_op_sub_8_re_pd(void)5860 void m68k_op_sub_8_re_pd(void)
5861 {
5862 	uint ea = EA_AY_PD_8();
5863 	uint src = MASK_OUT_ABOVE_8(DX);
5864 	uint dst = m68ki_read_8(ea);
5865 	uint res = dst - src;
5866 
5867 	FLAG_N = NFLAG_8(res);
5868 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5869 	FLAG_X = FLAG_C = CFLAG_8(res);
5870 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5871 
5872 	m68ki_write_8(ea, FLAG_Z);
5873 }
5874 
5875 
m68k_op_sub_8_re_pd7(void)5876 void m68k_op_sub_8_re_pd7(void)
5877 {
5878 	uint ea = EA_A7_PD_8();
5879 	uint src = MASK_OUT_ABOVE_8(DX);
5880 	uint dst = m68ki_read_8(ea);
5881 	uint res = dst - src;
5882 
5883 	FLAG_N = NFLAG_8(res);
5884 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5885 	FLAG_X = FLAG_C = CFLAG_8(res);
5886 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5887 
5888 	m68ki_write_8(ea, FLAG_Z);
5889 }
5890 
5891 
m68k_op_sub_8_re_di(void)5892 void m68k_op_sub_8_re_di(void)
5893 {
5894 	uint ea = EA_AY_DI_8();
5895 	uint src = MASK_OUT_ABOVE_8(DX);
5896 	uint dst = m68ki_read_8(ea);
5897 	uint res = dst - src;
5898 
5899 	FLAG_N = NFLAG_8(res);
5900 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5901 	FLAG_X = FLAG_C = CFLAG_8(res);
5902 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5903 
5904 	m68ki_write_8(ea, FLAG_Z);
5905 }
5906 
5907 
m68k_op_sub_8_re_ix(void)5908 void m68k_op_sub_8_re_ix(void)
5909 {
5910 	uint ea = EA_AY_IX_8();
5911 	uint src = MASK_OUT_ABOVE_8(DX);
5912 	uint dst = m68ki_read_8(ea);
5913 	uint res = dst - src;
5914 
5915 	FLAG_N = NFLAG_8(res);
5916 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5917 	FLAG_X = FLAG_C = CFLAG_8(res);
5918 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5919 
5920 	m68ki_write_8(ea, FLAG_Z);
5921 }
5922 
5923 
m68k_op_sub_8_re_aw(void)5924 void m68k_op_sub_8_re_aw(void)
5925 {
5926 	uint ea = EA_AW_8();
5927 	uint src = MASK_OUT_ABOVE_8(DX);
5928 	uint dst = m68ki_read_8(ea);
5929 	uint res = dst - src;
5930 
5931 	FLAG_N = NFLAG_8(res);
5932 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5933 	FLAG_X = FLAG_C = CFLAG_8(res);
5934 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5935 
5936 	m68ki_write_8(ea, FLAG_Z);
5937 }
5938 
5939 
m68k_op_sub_8_re_al(void)5940 void m68k_op_sub_8_re_al(void)
5941 {
5942 	uint ea = EA_AL_8();
5943 	uint src = MASK_OUT_ABOVE_8(DX);
5944 	uint dst = m68ki_read_8(ea);
5945 	uint res = dst - src;
5946 
5947 	FLAG_N = NFLAG_8(res);
5948 	FLAG_Z = MASK_OUT_ABOVE_8(res);
5949 	FLAG_X = FLAG_C = CFLAG_8(res);
5950 	FLAG_V = VFLAG_SUB_8(src, dst, res);
5951 
5952 	m68ki_write_8(ea, FLAG_Z);
5953 }
5954 
5955 
m68k_op_sub_16_re_ai(void)5956 void m68k_op_sub_16_re_ai(void)
5957 {
5958 	uint ea = EA_AY_AI_16();
5959 	uint src = MASK_OUT_ABOVE_16(DX);
5960 	uint dst = m68ki_read_16(ea);
5961 	uint res = dst - src;
5962 
5963 	FLAG_N = NFLAG_16(res);
5964 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5965 	FLAG_X = FLAG_C = CFLAG_16(res);
5966 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5967 
5968 	m68ki_write_16(ea, FLAG_Z);
5969 }
5970 
5971 
m68k_op_sub_16_re_pi(void)5972 void m68k_op_sub_16_re_pi(void)
5973 {
5974 	uint ea = EA_AY_PI_16();
5975 	uint src = MASK_OUT_ABOVE_16(DX);
5976 	uint dst = m68ki_read_16(ea);
5977 	uint res = dst - src;
5978 
5979 	FLAG_N = NFLAG_16(res);
5980 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5981 	FLAG_X = FLAG_C = CFLAG_16(res);
5982 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5983 
5984 	m68ki_write_16(ea, FLAG_Z);
5985 }
5986 
5987 
m68k_op_sub_16_re_pd(void)5988 void m68k_op_sub_16_re_pd(void)
5989 {
5990 	uint ea = EA_AY_PD_16();
5991 	uint src = MASK_OUT_ABOVE_16(DX);
5992 	uint dst = m68ki_read_16(ea);
5993 	uint res = dst - src;
5994 
5995 	FLAG_N = NFLAG_16(res);
5996 	FLAG_Z = MASK_OUT_ABOVE_16(res);
5997 	FLAG_X = FLAG_C = CFLAG_16(res);
5998 	FLAG_V = VFLAG_SUB_16(src, dst, res);
5999 
6000 	m68ki_write_16(ea, FLAG_Z);
6001 }
6002 
6003 
m68k_op_sub_16_re_di(void)6004 void m68k_op_sub_16_re_di(void)
6005 {
6006 	uint ea = EA_AY_DI_16();
6007 	uint src = MASK_OUT_ABOVE_16(DX);
6008 	uint dst = m68ki_read_16(ea);
6009 	uint res = dst - src;
6010 
6011 	FLAG_N = NFLAG_16(res);
6012 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6013 	FLAG_X = FLAG_C = CFLAG_16(res);
6014 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6015 
6016 	m68ki_write_16(ea, FLAG_Z);
6017 }
6018 
6019 
m68k_op_sub_16_re_ix(void)6020 void m68k_op_sub_16_re_ix(void)
6021 {
6022 	uint ea = EA_AY_IX_16();
6023 	uint src = MASK_OUT_ABOVE_16(DX);
6024 	uint dst = m68ki_read_16(ea);
6025 	uint res = dst - src;
6026 
6027 	FLAG_N = NFLAG_16(res);
6028 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6029 	FLAG_X = FLAG_C = CFLAG_16(res);
6030 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6031 
6032 	m68ki_write_16(ea, FLAG_Z);
6033 }
6034 
6035 
m68k_op_sub_16_re_aw(void)6036 void m68k_op_sub_16_re_aw(void)
6037 {
6038 	uint ea = EA_AW_16();
6039 	uint src = MASK_OUT_ABOVE_16(DX);
6040 	uint dst = m68ki_read_16(ea);
6041 	uint res = dst - src;
6042 
6043 	FLAG_N = NFLAG_16(res);
6044 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6045 	FLAG_X = FLAG_C = CFLAG_16(res);
6046 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6047 
6048 	m68ki_write_16(ea, FLAG_Z);
6049 }
6050 
6051 
m68k_op_sub_16_re_al(void)6052 void m68k_op_sub_16_re_al(void)
6053 {
6054 	uint ea = EA_AL_16();
6055 	uint src = MASK_OUT_ABOVE_16(DX);
6056 	uint dst = m68ki_read_16(ea);
6057 	uint res = dst - src;
6058 
6059 	FLAG_N = NFLAG_16(res);
6060 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6061 	FLAG_X = FLAG_C = CFLAG_16(res);
6062 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6063 
6064 	m68ki_write_16(ea, FLAG_Z);
6065 }
6066 
6067 
m68k_op_sub_32_re_ai(void)6068 void m68k_op_sub_32_re_ai(void)
6069 {
6070 	uint ea = EA_AY_AI_32();
6071 	uint src = DX;
6072 	uint dst = m68ki_read_32(ea);
6073 	uint res = dst - src;
6074 
6075 	FLAG_N = NFLAG_32(res);
6076 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6077 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6078 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6079 
6080 	m68ki_write_32(ea, FLAG_Z);
6081 }
6082 
6083 
m68k_op_sub_32_re_pi(void)6084 void m68k_op_sub_32_re_pi(void)
6085 {
6086 	uint ea = EA_AY_PI_32();
6087 	uint src = DX;
6088 	uint dst = m68ki_read_32(ea);
6089 	uint res = dst - src;
6090 
6091 	FLAG_N = NFLAG_32(res);
6092 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6093 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6094 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6095 
6096 	m68ki_write_32(ea, FLAG_Z);
6097 }
6098 
6099 
m68k_op_sub_32_re_pd(void)6100 void m68k_op_sub_32_re_pd(void)
6101 {
6102 	uint ea = EA_AY_PD_32();
6103 	uint src = DX;
6104 	uint dst = m68ki_read_32(ea);
6105 	uint res = dst - src;
6106 
6107 	FLAG_N = NFLAG_32(res);
6108 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6109 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6110 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6111 
6112 	m68ki_write_32(ea, FLAG_Z);
6113 }
6114 
6115 
m68k_op_sub_32_re_di(void)6116 void m68k_op_sub_32_re_di(void)
6117 {
6118 	uint ea = EA_AY_DI_32();
6119 	uint src = DX;
6120 	uint dst = m68ki_read_32(ea);
6121 	uint res = dst - src;
6122 
6123 	FLAG_N = NFLAG_32(res);
6124 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6125 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6126 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6127 
6128 	m68ki_write_32(ea, FLAG_Z);
6129 }
6130 
6131 
m68k_op_sub_32_re_ix(void)6132 void m68k_op_sub_32_re_ix(void)
6133 {
6134 	uint ea = EA_AY_IX_32();
6135 	uint src = DX;
6136 	uint dst = m68ki_read_32(ea);
6137 	uint res = dst - src;
6138 
6139 	FLAG_N = NFLAG_32(res);
6140 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6141 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6142 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6143 
6144 	m68ki_write_32(ea, FLAG_Z);
6145 }
6146 
6147 
m68k_op_sub_32_re_aw(void)6148 void m68k_op_sub_32_re_aw(void)
6149 {
6150 	uint ea = EA_AW_32();
6151 	uint src = DX;
6152 	uint dst = m68ki_read_32(ea);
6153 	uint res = dst - src;
6154 
6155 	FLAG_N = NFLAG_32(res);
6156 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6157 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6158 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6159 
6160 	m68ki_write_32(ea, FLAG_Z);
6161 }
6162 
6163 
m68k_op_sub_32_re_al(void)6164 void m68k_op_sub_32_re_al(void)
6165 {
6166 	uint ea = EA_AL_32();
6167 	uint src = DX;
6168 	uint dst = m68ki_read_32(ea);
6169 	uint res = dst - src;
6170 
6171 	FLAG_N = NFLAG_32(res);
6172 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6173 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6174 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6175 
6176 	m68ki_write_32(ea, FLAG_Z);
6177 }
6178 
6179 
m68k_op_suba_16_d(void)6180 void m68k_op_suba_16_d(void)
6181 {
6182 	uint* r_dst = &AX;
6183 
6184 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(DY));
6185 }
6186 
6187 
m68k_op_suba_16_a(void)6188 void m68k_op_suba_16_a(void)
6189 {
6190 	uint* r_dst = &AX;
6191 
6192 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(AY));
6193 }
6194 
6195 
m68k_op_suba_16_ai(void)6196 void m68k_op_suba_16_ai(void)
6197 {
6198 	signed short src = MAKE_INT_16(OPER_AY_AI_16());
6199 	uint* r_dst = &AX;
6200 
6201 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6202 }
6203 
6204 
m68k_op_suba_16_pi(void)6205 void m68k_op_suba_16_pi(void)
6206 {
6207 	signed short src = MAKE_INT_16(OPER_AY_PI_16());
6208 	uint* r_dst = &AX;
6209 
6210 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6211 }
6212 
6213 
m68k_op_suba_16_pd(void)6214 void m68k_op_suba_16_pd(void)
6215 {
6216 	signed short src = MAKE_INT_16(OPER_AY_PD_16());
6217 	uint* r_dst = &AX;
6218 
6219 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6220 }
6221 
6222 
m68k_op_suba_16_di(void)6223 void m68k_op_suba_16_di(void)
6224 {
6225 	signed short src = MAKE_INT_16(OPER_AY_DI_16());
6226 	uint* r_dst = &AX;
6227 
6228 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6229 }
6230 
6231 
m68k_op_suba_16_ix(void)6232 void m68k_op_suba_16_ix(void)
6233 {
6234 	signed short src = MAKE_INT_16(OPER_AY_IX_16());
6235 	uint* r_dst = &AX;
6236 
6237 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6238 }
6239 
6240 
m68k_op_suba_16_aw(void)6241 void m68k_op_suba_16_aw(void)
6242 {
6243 	signed short src = MAKE_INT_16(OPER_AW_16());
6244 	uint* r_dst = &AX;
6245 
6246 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6247 }
6248 
6249 
m68k_op_suba_16_al(void)6250 void m68k_op_suba_16_al(void)
6251 {
6252 	signed short src = MAKE_INT_16(OPER_AL_16());
6253 	uint* r_dst = &AX;
6254 
6255 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6256 }
6257 
6258 
m68k_op_suba_16_pcdi(void)6259 void m68k_op_suba_16_pcdi(void)
6260 {
6261 	signed short src = MAKE_INT_16(OPER_PCDI_16());
6262 	uint* r_dst = &AX;
6263 
6264 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6265 }
6266 
6267 
m68k_op_suba_16_pcix(void)6268 void m68k_op_suba_16_pcix(void)
6269 {
6270 	signed short src = MAKE_INT_16(OPER_PCIX_16());
6271 	uint* r_dst = &AX;
6272 
6273 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6274 }
6275 
6276 
m68k_op_suba_16_i(void)6277 void m68k_op_suba_16_i(void)
6278 {
6279 	signed short src = MAKE_INT_16(OPER_I_16());
6280 	uint* r_dst = &AX;
6281 
6282 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6283 }
6284 
6285 
m68k_op_suba_32_d(void)6286 void m68k_op_suba_32_d(void)
6287 {
6288 	uint* r_dst = &AX;
6289 
6290 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - DY);
6291 }
6292 
6293 
m68k_op_suba_32_a(void)6294 void m68k_op_suba_32_a(void)
6295 {
6296 	uint* r_dst = &AX;
6297 
6298 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - AY);
6299 }
6300 
6301 
m68k_op_suba_32_ai(void)6302 void m68k_op_suba_32_ai(void)
6303 {
6304 	uint src = OPER_AY_AI_32();
6305 	uint* r_dst = &AX;
6306 
6307 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6308 }
6309 
6310 
m68k_op_suba_32_pi(void)6311 void m68k_op_suba_32_pi(void)
6312 {
6313 	uint src = OPER_AY_PI_32();
6314 	uint* r_dst = &AX;
6315 
6316 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6317 }
6318 
6319 
m68k_op_suba_32_pd(void)6320 void m68k_op_suba_32_pd(void)
6321 {
6322 	uint src = OPER_AY_PD_32();
6323 	uint* r_dst = &AX;
6324 
6325 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6326 }
6327 
6328 
m68k_op_suba_32_di(void)6329 void m68k_op_suba_32_di(void)
6330 {
6331 	uint src = OPER_AY_DI_32();
6332 	uint* r_dst = &AX;
6333 
6334 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6335 }
6336 
6337 
m68k_op_suba_32_ix(void)6338 void m68k_op_suba_32_ix(void)
6339 {
6340 	uint src = OPER_AY_IX_32();
6341 	uint* r_dst = &AX;
6342 
6343 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6344 }
6345 
6346 
m68k_op_suba_32_aw(void)6347 void m68k_op_suba_32_aw(void)
6348 {
6349 	uint src = OPER_AW_32();
6350 	uint* r_dst = &AX;
6351 
6352 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6353 }
6354 
6355 
m68k_op_suba_32_al(void)6356 void m68k_op_suba_32_al(void)
6357 {
6358 	uint src = OPER_AL_32();
6359 	uint* r_dst = &AX;
6360 
6361 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6362 }
6363 
6364 
m68k_op_suba_32_pcdi(void)6365 void m68k_op_suba_32_pcdi(void)
6366 {
6367 	uint src = OPER_PCDI_32();
6368 	uint* r_dst = &AX;
6369 
6370 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6371 }
6372 
6373 
m68k_op_suba_32_pcix(void)6374 void m68k_op_suba_32_pcix(void)
6375 {
6376 	uint src = OPER_PCIX_32();
6377 	uint* r_dst = &AX;
6378 
6379 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6380 }
6381 
6382 
m68k_op_suba_32_i(void)6383 void m68k_op_suba_32_i(void)
6384 {
6385 	uint src = OPER_I_32();
6386 	uint* r_dst = &AX;
6387 
6388 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - src);
6389 }
6390 
6391 
m68k_op_subi_8_d(void)6392 void m68k_op_subi_8_d(void)
6393 {
6394 	uint* r_dst = &DY;
6395 	uint src = OPER_I_8();
6396 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
6397 	uint res = dst - src;
6398 
6399 	FLAG_N = NFLAG_8(res);
6400 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6401 	FLAG_X = FLAG_C = CFLAG_8(res);
6402 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6403 
6404 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
6405 }
6406 
6407 
m68k_op_subi_8_ai(void)6408 void m68k_op_subi_8_ai(void)
6409 {
6410 	uint src = OPER_I_8();
6411 	uint ea = EA_AY_AI_8();
6412 	uint dst = m68ki_read_8(ea);
6413 	uint res = dst - src;
6414 
6415 	FLAG_N = NFLAG_8(res);
6416 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6417 	FLAG_X = FLAG_C = CFLAG_8(res);
6418 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6419 
6420 	m68ki_write_8(ea, FLAG_Z);
6421 }
6422 
6423 
m68k_op_subi_8_pi(void)6424 void m68k_op_subi_8_pi(void)
6425 {
6426 	uint src = OPER_I_8();
6427 	uint ea = EA_AY_PI_8();
6428 	uint dst = m68ki_read_8(ea);
6429 	uint res = dst - src;
6430 
6431 	FLAG_N = NFLAG_8(res);
6432 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6433 	FLAG_X = FLAG_C = CFLAG_8(res);
6434 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6435 
6436 	m68ki_write_8(ea, FLAG_Z);
6437 }
6438 
6439 
m68k_op_subi_8_pi7(void)6440 void m68k_op_subi_8_pi7(void)
6441 {
6442 	uint src = OPER_I_8();
6443 	uint ea = EA_A7_PI_8();
6444 	uint dst = m68ki_read_8(ea);
6445 	uint res = dst - src;
6446 
6447 	FLAG_N = NFLAG_8(res);
6448 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6449 	FLAG_X = FLAG_C = CFLAG_8(res);
6450 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6451 
6452 	m68ki_write_8(ea, FLAG_Z);
6453 }
6454 
6455 
m68k_op_subi_8_pd(void)6456 void m68k_op_subi_8_pd(void)
6457 {
6458 	uint src = OPER_I_8();
6459 	uint ea = EA_AY_PD_8();
6460 	uint dst = m68ki_read_8(ea);
6461 	uint res = dst - src;
6462 
6463 	FLAG_N = NFLAG_8(res);
6464 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6465 	FLAG_X = FLAG_C = CFLAG_8(res);
6466 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6467 
6468 	m68ki_write_8(ea, FLAG_Z);
6469 }
6470 
6471 
m68k_op_subi_8_pd7(void)6472 void m68k_op_subi_8_pd7(void)
6473 {
6474 	uint src = OPER_I_8();
6475 	uint ea = EA_A7_PD_8();
6476 	uint dst = m68ki_read_8(ea);
6477 	uint res = dst - src;
6478 
6479 	FLAG_N = NFLAG_8(res);
6480 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6481 	FLAG_X = FLAG_C = CFLAG_8(res);
6482 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6483 
6484 	m68ki_write_8(ea, FLAG_Z);
6485 }
6486 
6487 
m68k_op_subi_8_di(void)6488 void m68k_op_subi_8_di(void)
6489 {
6490 	uint src = OPER_I_8();
6491 	uint ea = EA_AY_DI_8();
6492 	uint dst = m68ki_read_8(ea);
6493 	uint res = dst - src;
6494 
6495 	FLAG_N = NFLAG_8(res);
6496 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6497 	FLAG_X = FLAG_C = CFLAG_8(res);
6498 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6499 
6500 	m68ki_write_8(ea, FLAG_Z);
6501 }
6502 
6503 
m68k_op_subi_8_ix(void)6504 void m68k_op_subi_8_ix(void)
6505 {
6506 	uint src = OPER_I_8();
6507 	uint ea = EA_AY_IX_8();
6508 	uint dst = m68ki_read_8(ea);
6509 	uint res = dst - src;
6510 
6511 	FLAG_N = NFLAG_8(res);
6512 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6513 	FLAG_X = FLAG_C = CFLAG_8(res);
6514 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6515 
6516 	m68ki_write_8(ea, FLAG_Z);
6517 }
6518 
6519 
m68k_op_subi_8_aw(void)6520 void m68k_op_subi_8_aw(void)
6521 {
6522 	uint src = OPER_I_8();
6523 	uint ea = EA_AW_8();
6524 	uint dst = m68ki_read_8(ea);
6525 	uint res = dst - src;
6526 
6527 	FLAG_N = NFLAG_8(res);
6528 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6529 	FLAG_X = FLAG_C = CFLAG_8(res);
6530 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6531 
6532 	m68ki_write_8(ea, FLAG_Z);
6533 }
6534 
6535 
m68k_op_subi_8_al(void)6536 void m68k_op_subi_8_al(void)
6537 {
6538 	uint src = OPER_I_8();
6539 	uint ea = EA_AL_8();
6540 	uint dst = m68ki_read_8(ea);
6541 	uint res = dst - src;
6542 
6543 	FLAG_N = NFLAG_8(res);
6544 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6545 	FLAG_X = FLAG_C = CFLAG_8(res);
6546 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6547 
6548 	m68ki_write_8(ea, FLAG_Z);
6549 }
6550 
6551 
m68k_op_subi_16_d(void)6552 void m68k_op_subi_16_d(void)
6553 {
6554 	uint* r_dst = &DY;
6555 	uint src = OPER_I_16();
6556 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
6557 	uint res = dst - src;
6558 
6559 	FLAG_N = NFLAG_16(res);
6560 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6561 	FLAG_X = FLAG_C = CFLAG_16(res);
6562 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6563 
6564 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
6565 }
6566 
6567 
m68k_op_subi_16_ai(void)6568 void m68k_op_subi_16_ai(void)
6569 {
6570 	uint src = OPER_I_16();
6571 	uint ea = EA_AY_AI_16();
6572 	uint dst = m68ki_read_16(ea);
6573 	uint res = dst - src;
6574 
6575 	FLAG_N = NFLAG_16(res);
6576 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6577 	FLAG_X = FLAG_C = CFLAG_16(res);
6578 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6579 
6580 	m68ki_write_16(ea, FLAG_Z);
6581 }
6582 
6583 
m68k_op_subi_16_pi(void)6584 void m68k_op_subi_16_pi(void)
6585 {
6586 	uint src = OPER_I_16();
6587 	uint ea = EA_AY_PI_16();
6588 	uint dst = m68ki_read_16(ea);
6589 	uint res = dst - src;
6590 
6591 	FLAG_N = NFLAG_16(res);
6592 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6593 	FLAG_X = FLAG_C = CFLAG_16(res);
6594 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6595 
6596 	m68ki_write_16(ea, FLAG_Z);
6597 }
6598 
6599 
m68k_op_subi_16_pd(void)6600 void m68k_op_subi_16_pd(void)
6601 {
6602 	uint src = OPER_I_16();
6603 	uint ea = EA_AY_PD_16();
6604 	uint dst = m68ki_read_16(ea);
6605 	uint res = dst - src;
6606 
6607 	FLAG_N = NFLAG_16(res);
6608 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6609 	FLAG_X = FLAG_C = CFLAG_16(res);
6610 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6611 
6612 	m68ki_write_16(ea, FLAG_Z);
6613 }
6614 
6615 
m68k_op_subi_16_di(void)6616 void m68k_op_subi_16_di(void)
6617 {
6618 	uint src = OPER_I_16();
6619 	uint ea = EA_AY_DI_16();
6620 	uint dst = m68ki_read_16(ea);
6621 	uint res = dst - src;
6622 
6623 	FLAG_N = NFLAG_16(res);
6624 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6625 	FLAG_X = FLAG_C = CFLAG_16(res);
6626 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6627 
6628 	m68ki_write_16(ea, FLAG_Z);
6629 }
6630 
6631 
m68k_op_subi_16_ix(void)6632 void m68k_op_subi_16_ix(void)
6633 {
6634 	uint src = OPER_I_16();
6635 	uint ea = EA_AY_IX_16();
6636 	uint dst = m68ki_read_16(ea);
6637 	uint res = dst - src;
6638 
6639 	FLAG_N = NFLAG_16(res);
6640 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6641 	FLAG_X = FLAG_C = CFLAG_16(res);
6642 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6643 
6644 	m68ki_write_16(ea, FLAG_Z);
6645 }
6646 
6647 
m68k_op_subi_16_aw(void)6648 void m68k_op_subi_16_aw(void)
6649 {
6650 	uint src = OPER_I_16();
6651 	uint ea = EA_AW_16();
6652 	uint dst = m68ki_read_16(ea);
6653 	uint res = dst - src;
6654 
6655 	FLAG_N = NFLAG_16(res);
6656 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6657 	FLAG_X = FLAG_C = CFLAG_16(res);
6658 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6659 
6660 	m68ki_write_16(ea, FLAG_Z);
6661 }
6662 
6663 
m68k_op_subi_16_al(void)6664 void m68k_op_subi_16_al(void)
6665 {
6666 	uint src = OPER_I_16();
6667 	uint ea = EA_AL_16();
6668 	uint dst = m68ki_read_16(ea);
6669 	uint res = dst - src;
6670 
6671 	FLAG_N = NFLAG_16(res);
6672 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6673 	FLAG_X = FLAG_C = CFLAG_16(res);
6674 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6675 
6676 	m68ki_write_16(ea, FLAG_Z);
6677 }
6678 
6679 
m68k_op_subi_32_d(void)6680 void m68k_op_subi_32_d(void)
6681 {
6682 	uint* r_dst = &DY;
6683 	uint src = OPER_I_32();
6684 	uint dst = *r_dst;
6685 	uint res = dst - src;
6686 
6687 	FLAG_N = NFLAG_32(res);
6688 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6689 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6690 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6691 
6692 	*r_dst = FLAG_Z;
6693 }
6694 
6695 
m68k_op_subi_32_ai(void)6696 void m68k_op_subi_32_ai(void)
6697 {
6698 	uint src = OPER_I_32();
6699 	uint ea = EA_AY_AI_32();
6700 	uint dst = m68ki_read_32(ea);
6701 	uint res = dst - src;
6702 
6703 	FLAG_N = NFLAG_32(res);
6704 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6705 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6706 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6707 
6708 	m68ki_write_32(ea, FLAG_Z);
6709 }
6710 
6711 
m68k_op_subi_32_pi(void)6712 void m68k_op_subi_32_pi(void)
6713 {
6714 	uint src = OPER_I_32();
6715 	uint ea = EA_AY_PI_32();
6716 	uint dst = m68ki_read_32(ea);
6717 	uint res = dst - src;
6718 
6719 	FLAG_N = NFLAG_32(res);
6720 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6721 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6722 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6723 
6724 	m68ki_write_32(ea, FLAG_Z);
6725 }
6726 
6727 
m68k_op_subi_32_pd(void)6728 void m68k_op_subi_32_pd(void)
6729 {
6730 	uint src = OPER_I_32();
6731 	uint ea = EA_AY_PD_32();
6732 	uint dst = m68ki_read_32(ea);
6733 	uint res = dst - src;
6734 
6735 	FLAG_N = NFLAG_32(res);
6736 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6737 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6738 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6739 
6740 	m68ki_write_32(ea, FLAG_Z);
6741 }
6742 
6743 
m68k_op_subi_32_di(void)6744 void m68k_op_subi_32_di(void)
6745 {
6746 	uint src = OPER_I_32();
6747 	uint ea = EA_AY_DI_32();
6748 	uint dst = m68ki_read_32(ea);
6749 	uint res = dst - src;
6750 
6751 	FLAG_N = NFLAG_32(res);
6752 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6753 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6754 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6755 
6756 	m68ki_write_32(ea, FLAG_Z);
6757 }
6758 
6759 
m68k_op_subi_32_ix(void)6760 void m68k_op_subi_32_ix(void)
6761 {
6762 	uint src = OPER_I_32();
6763 	uint ea = EA_AY_IX_32();
6764 	uint dst = m68ki_read_32(ea);
6765 	uint res = dst - src;
6766 
6767 	FLAG_N = NFLAG_32(res);
6768 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6769 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6770 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6771 
6772 	m68ki_write_32(ea, FLAG_Z);
6773 }
6774 
6775 
m68k_op_subi_32_aw(void)6776 void m68k_op_subi_32_aw(void)
6777 {
6778 	uint src = OPER_I_32();
6779 	uint ea = EA_AW_32();
6780 	uint dst = m68ki_read_32(ea);
6781 	uint res = dst - src;
6782 
6783 	FLAG_N = NFLAG_32(res);
6784 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6785 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6786 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6787 
6788 	m68ki_write_32(ea, FLAG_Z);
6789 }
6790 
6791 
m68k_op_subi_32_al(void)6792 void m68k_op_subi_32_al(void)
6793 {
6794 	uint src = OPER_I_32();
6795 	uint ea = EA_AL_32();
6796 	uint dst = m68ki_read_32(ea);
6797 	uint res = dst - src;
6798 
6799 	FLAG_N = NFLAG_32(res);
6800 	FLAG_Z = MASK_OUT_ABOVE_32(res);
6801 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
6802 	FLAG_V = VFLAG_SUB_32(src, dst, res);
6803 
6804 	m68ki_write_32(ea, FLAG_Z);
6805 }
6806 
6807 
m68k_op_subq_8_d(void)6808 void m68k_op_subq_8_d(void)
6809 {
6810 	uint* r_dst = &DY;
6811 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6812 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
6813 	uint res = dst - src;
6814 
6815 	FLAG_N = NFLAG_8(res);
6816 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6817 	FLAG_X = FLAG_C = CFLAG_8(res);
6818 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6819 
6820 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;
6821 }
6822 
6823 
m68k_op_subq_8_ai(void)6824 void m68k_op_subq_8_ai(void)
6825 {
6826 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6827 	uint ea = EA_AY_AI_8();
6828 	uint dst = m68ki_read_8(ea);
6829 	uint res = dst - src;
6830 
6831 	FLAG_N = NFLAG_8(res);
6832 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6833 	FLAG_X = FLAG_C = CFLAG_8(res);
6834 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6835 
6836 	m68ki_write_8(ea, FLAG_Z);
6837 }
6838 
6839 
m68k_op_subq_8_pi(void)6840 void m68k_op_subq_8_pi(void)
6841 {
6842 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6843 	uint ea = EA_AY_PI_8();
6844 	uint dst = m68ki_read_8(ea);
6845 	uint res = dst - src;
6846 
6847 	FLAG_N = NFLAG_8(res);
6848 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6849 	FLAG_X = FLAG_C = CFLAG_8(res);
6850 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6851 
6852 	m68ki_write_8(ea, FLAG_Z);
6853 }
6854 
6855 
m68k_op_subq_8_pi7(void)6856 void m68k_op_subq_8_pi7(void)
6857 {
6858 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6859 	uint ea = EA_A7_PI_8();
6860 	uint dst = m68ki_read_8(ea);
6861 	uint res = dst - src;
6862 
6863 	FLAG_N = NFLAG_8(res);
6864 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6865 	FLAG_X = FLAG_C = CFLAG_8(res);
6866 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6867 
6868 	m68ki_write_8(ea, FLAG_Z);
6869 }
6870 
6871 
m68k_op_subq_8_pd(void)6872 void m68k_op_subq_8_pd(void)
6873 {
6874 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6875 	uint ea = EA_AY_PD_8();
6876 	uint dst = m68ki_read_8(ea);
6877 	uint res = dst - src;
6878 
6879 	FLAG_N = NFLAG_8(res);
6880 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6881 	FLAG_X = FLAG_C = CFLAG_8(res);
6882 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6883 
6884 	m68ki_write_8(ea, FLAG_Z);
6885 }
6886 
6887 
m68k_op_subq_8_pd7(void)6888 void m68k_op_subq_8_pd7(void)
6889 {
6890 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6891 	uint ea = EA_A7_PD_8();
6892 	uint dst = m68ki_read_8(ea);
6893 	uint res = dst - src;
6894 
6895 	FLAG_N = NFLAG_8(res);
6896 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6897 	FLAG_X = FLAG_C = CFLAG_8(res);
6898 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6899 
6900 	m68ki_write_8(ea, FLAG_Z);
6901 }
6902 
6903 
m68k_op_subq_8_di(void)6904 void m68k_op_subq_8_di(void)
6905 {
6906 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6907 	uint ea = EA_AY_DI_8();
6908 	uint dst = m68ki_read_8(ea);
6909 	uint res = dst - src;
6910 
6911 	FLAG_N = NFLAG_8(res);
6912 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6913 	FLAG_X = FLAG_C = CFLAG_8(res);
6914 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6915 
6916 	m68ki_write_8(ea, FLAG_Z);
6917 }
6918 
6919 
m68k_op_subq_8_ix(void)6920 void m68k_op_subq_8_ix(void)
6921 {
6922 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6923 	uint ea = EA_AY_IX_8();
6924 	uint dst = m68ki_read_8(ea);
6925 	uint res = dst - src;
6926 
6927 	FLAG_N = NFLAG_8(res);
6928 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6929 	FLAG_X = FLAG_C = CFLAG_8(res);
6930 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6931 
6932 	m68ki_write_8(ea, FLAG_Z);
6933 }
6934 
6935 
m68k_op_subq_8_aw(void)6936 void m68k_op_subq_8_aw(void)
6937 {
6938 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6939 	uint ea = EA_AW_8();
6940 	uint dst = m68ki_read_8(ea);
6941 	uint res = dst - src;
6942 
6943 	FLAG_N = NFLAG_8(res);
6944 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6945 	FLAG_X = FLAG_C = CFLAG_8(res);
6946 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6947 
6948 	m68ki_write_8(ea, FLAG_Z);
6949 }
6950 
6951 
m68k_op_subq_8_al(void)6952 void m68k_op_subq_8_al(void)
6953 {
6954 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6955 	uint ea = EA_AL_8();
6956 	uint dst = m68ki_read_8(ea);
6957 	uint res = dst - src;
6958 
6959 	FLAG_N = NFLAG_8(res);
6960 	FLAG_Z = MASK_OUT_ABOVE_8(res);
6961 	FLAG_X = FLAG_C = CFLAG_8(res);
6962 	FLAG_V = VFLAG_SUB_8(src, dst, res);
6963 
6964 	m68ki_write_8(ea, FLAG_Z);
6965 }
6966 
6967 
m68k_op_subq_16_d(void)6968 void m68k_op_subq_16_d(void)
6969 {
6970 	uint* r_dst = &DY;
6971 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6972 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
6973 	uint res = dst - src;
6974 
6975 	FLAG_N = NFLAG_16(res);
6976 	FLAG_Z = MASK_OUT_ABOVE_16(res);
6977 	FLAG_X = FLAG_C = CFLAG_16(res);
6978 	FLAG_V = VFLAG_SUB_16(src, dst, res);
6979 
6980 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;
6981 }
6982 
6983 
m68k_op_subq_16_a(void)6984 void m68k_op_subq_16_a(void)
6985 {
6986 	uint* r_dst = &AY;
6987 
6988 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1));
6989 }
6990 
6991 
m68k_op_subq_16_ai(void)6992 void m68k_op_subq_16_ai(void)
6993 {
6994 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
6995 	uint ea = EA_AY_AI_16();
6996 	uint dst = m68ki_read_16(ea);
6997 	uint res = dst - src;
6998 
6999 	FLAG_N = NFLAG_16(res);
7000 	FLAG_Z = MASK_OUT_ABOVE_16(res);
7001 	FLAG_X = FLAG_C = CFLAG_16(res);
7002 	FLAG_V = VFLAG_SUB_16(src, dst, res);
7003 
7004 	m68ki_write_16(ea, FLAG_Z);
7005 }
7006 
7007 
m68k_op_subq_16_pi(void)7008 void m68k_op_subq_16_pi(void)
7009 {
7010 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7011 	uint ea = EA_AY_PI_16();
7012 	uint dst = m68ki_read_16(ea);
7013 	uint res = dst - src;
7014 
7015 	FLAG_N = NFLAG_16(res);
7016 	FLAG_Z = MASK_OUT_ABOVE_16(res);
7017 	FLAG_X = FLAG_C = CFLAG_16(res);
7018 	FLAG_V = VFLAG_SUB_16(src, dst, res);
7019 
7020 	m68ki_write_16(ea, FLAG_Z);
7021 }
7022 
7023 
m68k_op_subq_16_pd(void)7024 void m68k_op_subq_16_pd(void)
7025 {
7026 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7027 	uint ea = EA_AY_PD_16();
7028 	uint dst = m68ki_read_16(ea);
7029 	uint res = dst - src;
7030 
7031 	FLAG_N = NFLAG_16(res);
7032 	FLAG_Z = MASK_OUT_ABOVE_16(res);
7033 	FLAG_X = FLAG_C = CFLAG_16(res);
7034 	FLAG_V = VFLAG_SUB_16(src, dst, res);
7035 
7036 	m68ki_write_16(ea, FLAG_Z);
7037 }
7038 
7039 
m68k_op_subq_16_di(void)7040 void m68k_op_subq_16_di(void)
7041 {
7042 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7043 	uint ea = EA_AY_DI_16();
7044 	uint dst = m68ki_read_16(ea);
7045 	uint res = dst - src;
7046 
7047 	FLAG_N = NFLAG_16(res);
7048 	FLAG_Z = MASK_OUT_ABOVE_16(res);
7049 	FLAG_X = FLAG_C = CFLAG_16(res);
7050 	FLAG_V = VFLAG_SUB_16(src, dst, res);
7051 
7052 	m68ki_write_16(ea, FLAG_Z);
7053 }
7054 
7055 
m68k_op_subq_16_ix(void)7056 void m68k_op_subq_16_ix(void)
7057 {
7058 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7059 	uint ea = EA_AY_IX_16();
7060 	uint dst = m68ki_read_16(ea);
7061 	uint res = dst - src;
7062 
7063 	FLAG_N = NFLAG_16(res);
7064 	FLAG_Z = MASK_OUT_ABOVE_16(res);
7065 	FLAG_X = FLAG_C = CFLAG_16(res);
7066 	FLAG_V = VFLAG_SUB_16(src, dst, res);
7067 
7068 	m68ki_write_16(ea, FLAG_Z);
7069 }
7070 
7071 
m68k_op_subq_16_aw(void)7072 void m68k_op_subq_16_aw(void)
7073 {
7074 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7075 	uint ea = EA_AW_16();
7076 	uint dst = m68ki_read_16(ea);
7077 	uint res = dst - src;
7078 
7079 	FLAG_N = NFLAG_16(res);
7080 	FLAG_Z = MASK_OUT_ABOVE_16(res);
7081 	FLAG_X = FLAG_C = CFLAG_16(res);
7082 	FLAG_V = VFLAG_SUB_16(src, dst, res);
7083 
7084 	m68ki_write_16(ea, FLAG_Z);
7085 }
7086 
7087 
m68k_op_subq_16_al(void)7088 void m68k_op_subq_16_al(void)
7089 {
7090 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7091 	uint ea = EA_AL_16();
7092 	uint dst = m68ki_read_16(ea);
7093 	uint res = dst - src;
7094 
7095 	FLAG_N = NFLAG_16(res);
7096 	FLAG_Z = MASK_OUT_ABOVE_16(res);
7097 	FLAG_X = FLAG_C = CFLAG_16(res);
7098 	FLAG_V = VFLAG_SUB_16(src, dst, res);
7099 
7100 	m68ki_write_16(ea, FLAG_Z);
7101 }
7102 
7103 
m68k_op_subq_32_d(void)7104 void m68k_op_subq_32_d(void)
7105 {
7106 	uint* r_dst = &DY;
7107 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7108 	uint dst = *r_dst;
7109 	uint res = dst - src;
7110 
7111 	FLAG_N = NFLAG_32(res);
7112 	FLAG_Z = MASK_OUT_ABOVE_32(res);
7113 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7114 	FLAG_V = VFLAG_SUB_32(src, dst, res);
7115 
7116 	*r_dst = FLAG_Z;
7117 }
7118 
7119 
m68k_op_subq_32_a(void)7120 void m68k_op_subq_32_a(void)
7121 {
7122 	uint* r_dst = &AY;
7123 
7124 	*r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1));
7125 }
7126 
7127 
m68k_op_subq_32_ai(void)7128 void m68k_op_subq_32_ai(void)
7129 {
7130 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7131 	uint ea = EA_AY_AI_32();
7132 	uint dst = m68ki_read_32(ea);
7133 	uint res = dst - src;
7134 
7135 	FLAG_N = NFLAG_32(res);
7136 	FLAG_Z = MASK_OUT_ABOVE_32(res);
7137 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7138 	FLAG_V = VFLAG_SUB_32(src, dst, res);
7139 
7140 	m68ki_write_32(ea, FLAG_Z);
7141 }
7142 
7143 
m68k_op_subq_32_pi(void)7144 void m68k_op_subq_32_pi(void)
7145 {
7146 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7147 	uint ea = EA_AY_PI_32();
7148 	uint dst = m68ki_read_32(ea);
7149 	uint res = dst - src;
7150 
7151 	FLAG_N = NFLAG_32(res);
7152 	FLAG_Z = MASK_OUT_ABOVE_32(res);
7153 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7154 	FLAG_V = VFLAG_SUB_32(src, dst, res);
7155 
7156 	m68ki_write_32(ea, FLAG_Z);
7157 }
7158 
7159 
m68k_op_subq_32_pd(void)7160 void m68k_op_subq_32_pd(void)
7161 {
7162 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7163 	uint ea = EA_AY_PD_32();
7164 	uint dst = m68ki_read_32(ea);
7165 	uint res = dst - src;
7166 
7167 	FLAG_N = NFLAG_32(res);
7168 	FLAG_Z = MASK_OUT_ABOVE_32(res);
7169 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7170 	FLAG_V = VFLAG_SUB_32(src, dst, res);
7171 
7172 	m68ki_write_32(ea, FLAG_Z);
7173 }
7174 
7175 
m68k_op_subq_32_di(void)7176 void m68k_op_subq_32_di(void)
7177 {
7178 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7179 	uint ea = EA_AY_DI_32();
7180 	uint dst = m68ki_read_32(ea);
7181 	uint res = dst - src;
7182 
7183 	FLAG_N = NFLAG_32(res);
7184 	FLAG_Z = MASK_OUT_ABOVE_32(res);
7185 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7186 	FLAG_V = VFLAG_SUB_32(src, dst, res);
7187 
7188 	m68ki_write_32(ea, FLAG_Z);
7189 }
7190 
7191 
m68k_op_subq_32_ix(void)7192 void m68k_op_subq_32_ix(void)
7193 {
7194 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7195 	uint ea = EA_AY_IX_32();
7196 	uint dst = m68ki_read_32(ea);
7197 	uint res = dst - src;
7198 
7199 	FLAG_N = NFLAG_32(res);
7200 	FLAG_Z = MASK_OUT_ABOVE_32(res);
7201 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7202 	FLAG_V = VFLAG_SUB_32(src, dst, res);
7203 
7204 	m68ki_write_32(ea, FLAG_Z);
7205 }
7206 
7207 
m68k_op_subq_32_aw(void)7208 void m68k_op_subq_32_aw(void)
7209 {
7210 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7211 	uint ea = EA_AW_32();
7212 	uint dst = m68ki_read_32(ea);
7213 	uint res = dst - src;
7214 
7215 	FLAG_N = NFLAG_32(res);
7216 	FLAG_Z = MASK_OUT_ABOVE_32(res);
7217 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7218 	FLAG_V = VFLAG_SUB_32(src, dst, res);
7219 
7220 	m68ki_write_32(ea, FLAG_Z);
7221 }
7222 
7223 
m68k_op_subq_32_al(void)7224 void m68k_op_subq_32_al(void)
7225 {
7226 	uint src = (((REG_IR >> 9) - 1) & 7) + 1;
7227 	uint ea = EA_AL_32();
7228 	uint dst = m68ki_read_32(ea);
7229 	uint res = dst - src;
7230 
7231 	FLAG_N = NFLAG_32(res);
7232 	FLAG_Z = MASK_OUT_ABOVE_32(res);
7233 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7234 	FLAG_V = VFLAG_SUB_32(src, dst, res);
7235 
7236 	m68ki_write_32(ea, FLAG_Z);
7237 }
7238 
7239 
m68k_op_subx_8_rr(void)7240 void m68k_op_subx_8_rr(void)
7241 {
7242 	uint* r_dst = &DX;
7243 	uint src = MASK_OUT_ABOVE_8(DY);
7244 	uint dst = MASK_OUT_ABOVE_8(*r_dst);
7245 	uint res = dst - src - XFLAG_AS_1();
7246 
7247 	FLAG_N = NFLAG_8(res);
7248 	FLAG_X = FLAG_C = CFLAG_8(res);
7249 	FLAG_V = VFLAG_SUB_8(src, dst, res);
7250 
7251 	res = MASK_OUT_ABOVE_8(res);
7252 	FLAG_Z |= res;
7253 
7254 	*r_dst = MASK_OUT_BELOW_8(*r_dst) | res;
7255 }
7256 
7257 
m68k_op_subx_16_rr(void)7258 void m68k_op_subx_16_rr(void)
7259 {
7260 	uint* r_dst = &DX;
7261 	uint src = MASK_OUT_ABOVE_16(DY);
7262 	uint dst = MASK_OUT_ABOVE_16(*r_dst);
7263 	uint res = dst - src - XFLAG_AS_1();
7264 
7265 	FLAG_N = NFLAG_16(res);
7266 	FLAG_X = FLAG_C = CFLAG_16(res);
7267 	FLAG_V = VFLAG_SUB_16(src, dst, res);
7268 
7269 	res = MASK_OUT_ABOVE_16(res);
7270 	FLAG_Z |= res;
7271 
7272 	*r_dst = MASK_OUT_BELOW_16(*r_dst) | res;
7273 }
7274 
7275 
m68k_op_subx_32_rr(void)7276 void m68k_op_subx_32_rr(void)
7277 {
7278 	uint* r_dst = &DX;
7279 	uint src = DY;
7280 	uint dst = *r_dst;
7281 	uint res = dst - src - XFLAG_AS_1();
7282 
7283 	FLAG_N = NFLAG_32(res);
7284 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7285 	FLAG_V = VFLAG_SUB_32(src, dst, res);
7286 
7287 	res = MASK_OUT_ABOVE_32(res);
7288 	FLAG_Z |= res;
7289 
7290 	*r_dst = res;
7291 }
7292 
7293 
m68k_op_subx_8_mm_ax7(void)7294 void m68k_op_subx_8_mm_ax7(void)
7295 {
7296 	uint src = OPER_AY_PD_8();
7297 	uint ea  = EA_A7_PD_8();
7298 	uint dst = m68ki_read_8(ea);
7299 	uint res = dst - src - XFLAG_AS_1();
7300 
7301 	FLAG_N = NFLAG_8(res);
7302 	FLAG_X = FLAG_C = CFLAG_8(res);
7303 	FLAG_V = VFLAG_SUB_8(src, dst, res);
7304 
7305 	res = MASK_OUT_ABOVE_8(res);
7306 	FLAG_Z |= res;
7307 
7308 	m68ki_write_8(ea, res);
7309 }
7310 
7311 
m68k_op_subx_8_mm_ay7(void)7312 void m68k_op_subx_8_mm_ay7(void)
7313 {
7314 	uint src = OPER_A7_PD_8();
7315 	uint ea  = EA_AX_PD_8();
7316 	uint dst = m68ki_read_8(ea);
7317 	uint res = dst - src - XFLAG_AS_1();
7318 
7319 	FLAG_N = NFLAG_8(res);
7320 	FLAG_X = FLAG_C = CFLAG_8(res);
7321 	FLAG_V = VFLAG_SUB_8(src, dst, res);
7322 
7323 	res = MASK_OUT_ABOVE_8(res);
7324 	FLAG_Z |= res;
7325 
7326 	m68ki_write_8(ea, res);
7327 }
7328 
7329 
m68k_op_subx_8_mm_axy7(void)7330 void m68k_op_subx_8_mm_axy7(void)
7331 {
7332 	uint src = OPER_A7_PD_8();
7333 	uint ea  = EA_A7_PD_8();
7334 	uint dst = m68ki_read_8(ea);
7335 	uint res = dst - src - XFLAG_AS_1();
7336 
7337 	FLAG_N = NFLAG_8(res);
7338 	FLAG_X = FLAG_C = CFLAG_8(res);
7339 	FLAG_V = VFLAG_SUB_8(src, dst, res);
7340 
7341 	res = MASK_OUT_ABOVE_8(res);
7342 	FLAG_Z |= res;
7343 
7344 	m68ki_write_8(ea, res);
7345 }
7346 
7347 
m68k_op_subx_8_mm(void)7348 void m68k_op_subx_8_mm(void)
7349 {
7350 	uint src = OPER_AY_PD_8();
7351 	uint ea  = EA_AX_PD_8();
7352 	uint dst = m68ki_read_8(ea);
7353 	uint res = dst - src - XFLAG_AS_1();
7354 
7355 	FLAG_N = NFLAG_8(res);
7356 	FLAG_X = FLAG_C = CFLAG_8(res);
7357 	FLAG_V = VFLAG_SUB_8(src, dst, res);
7358 
7359 	res = MASK_OUT_ABOVE_8(res);
7360 	FLAG_Z |= res;
7361 
7362 	m68ki_write_8(ea, res);
7363 }
7364 
7365 
m68k_op_subx_16_mm(void)7366 void m68k_op_subx_16_mm(void)
7367 {
7368 	uint src = OPER_AY_PD_16();
7369 	uint ea  = EA_AX_PD_16();
7370 	uint dst = m68ki_read_16(ea);
7371 	uint res = dst - src - XFLAG_AS_1();
7372 
7373 	FLAG_N = NFLAG_16(res);
7374 	FLAG_X = FLAG_C = CFLAG_16(res);
7375 	FLAG_V = VFLAG_SUB_16(src, dst, res);
7376 
7377 	res = MASK_OUT_ABOVE_16(res);
7378 	FLAG_Z |= res;
7379 
7380 	m68ki_write_16(ea, res);
7381 }
7382 
7383 
m68k_op_subx_32_mm(void)7384 void m68k_op_subx_32_mm(void)
7385 {
7386 	uint src = OPER_AY_PD_32();
7387 	uint ea  = EA_AX_PD_32();
7388 	uint dst = m68ki_read_32(ea);
7389 	uint res = dst - src - XFLAG_AS_1();
7390 
7391 	FLAG_N = NFLAG_32(res);
7392 	FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);
7393 	FLAG_V = VFLAG_SUB_32(src, dst, res);
7394 
7395 	res = MASK_OUT_ABOVE_32(res);
7396 	FLAG_Z |= res;
7397 
7398 	m68ki_write_32(ea, res);
7399 }
7400 
7401 
m68k_op_swap_32(void)7402 void m68k_op_swap_32(void)
7403 {
7404 	uint* r_dst = &DY;
7405 
7406 	FLAG_Z = MASK_OUT_ABOVE_32(*r_dst<<16);
7407 	*r_dst = (*r_dst>>16) | FLAG_Z;
7408 
7409 	FLAG_Z = *r_dst;
7410 	FLAG_N = NFLAG_32(*r_dst);
7411 	FLAG_C = CFLAG_CLEAR;
7412 	FLAG_V = VFLAG_CLEAR;
7413 }
7414 
7415 
m68k_op_tas_8_d(void)7416 void m68k_op_tas_8_d(void)
7417 {
7418 	uint* r_dst = &DY;
7419 
7420 	FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);
7421 	FLAG_N = NFLAG_8(*r_dst);
7422 	FLAG_V = VFLAG_CLEAR;
7423 	FLAG_C = CFLAG_CLEAR;
7424 	*r_dst |= 0x80;
7425 }
7426 
7427 
m68k_op_tas_8_ai(void)7428 void m68k_op_tas_8_ai(void)
7429 {
7430 	uint ea = EA_AY_AI_8();
7431 	uint dst = m68ki_read_8(ea);
7432 
7433 	FLAG_Z = dst;
7434 	FLAG_N = NFLAG_8(dst);
7435 	FLAG_V = VFLAG_CLEAR;
7436 	FLAG_C = CFLAG_CLEAR;
7437 	m68ki_write_8(ea, dst | 0x80);
7438 }
7439 
7440 
m68k_op_tas_8_pi(void)7441 void m68k_op_tas_8_pi(void)
7442 {
7443 	uint ea = EA_AY_PI_8();
7444 	uint dst = m68ki_read_8(ea);
7445 
7446 	FLAG_Z = dst;
7447 	FLAG_N = NFLAG_8(dst);
7448 	FLAG_V = VFLAG_CLEAR;
7449 	FLAG_C = CFLAG_CLEAR;
7450 	m68ki_write_8(ea, dst | 0x80);
7451 }
7452 
7453 
m68k_op_tas_8_pi7(void)7454 void m68k_op_tas_8_pi7(void)
7455 {
7456 	uint ea = EA_A7_PI_8();
7457 	uint dst = m68ki_read_8(ea);
7458 
7459 	FLAG_Z = dst;
7460 	FLAG_N = NFLAG_8(dst);
7461 	FLAG_V = VFLAG_CLEAR;
7462 	FLAG_C = CFLAG_CLEAR;
7463 	m68ki_write_8(ea, dst | 0x80);
7464 }
7465 
7466 
m68k_op_tas_8_pd(void)7467 void m68k_op_tas_8_pd(void)
7468 {
7469 	uint ea = EA_AY_PD_8();
7470 	uint dst = m68ki_read_8(ea);
7471 
7472 	FLAG_Z = dst;
7473 	FLAG_N = NFLAG_8(dst);
7474 	FLAG_V = VFLAG_CLEAR;
7475 	FLAG_C = CFLAG_CLEAR;
7476 	m68ki_write_8(ea, dst | 0x80);
7477 }
7478 
7479 
m68k_op_tas_8_pd7(void)7480 void m68k_op_tas_8_pd7(void)
7481 {
7482 	uint ea = EA_A7_PD_8();
7483 	uint dst = m68ki_read_8(ea);
7484 
7485 	FLAG_Z = dst;
7486 	FLAG_N = NFLAG_8(dst);
7487 	FLAG_V = VFLAG_CLEAR;
7488 	FLAG_C = CFLAG_CLEAR;
7489 	m68ki_write_8(ea, dst | 0x80);
7490 }
7491 
7492 
m68k_op_tas_8_di(void)7493 void m68k_op_tas_8_di(void)
7494 {
7495 	uint ea = EA_AY_DI_8();
7496 	uint dst = m68ki_read_8(ea);
7497 
7498 	FLAG_Z = dst;
7499 	FLAG_N = NFLAG_8(dst);
7500 	FLAG_V = VFLAG_CLEAR;
7501 	FLAG_C = CFLAG_CLEAR;
7502 	m68ki_write_8(ea, dst | 0x80);
7503 }
7504 
7505 
m68k_op_tas_8_ix(void)7506 void m68k_op_tas_8_ix(void)
7507 {
7508 	uint ea = EA_AY_IX_8();
7509 	uint dst = m68ki_read_8(ea);
7510 
7511 	FLAG_Z = dst;
7512 	FLAG_N = NFLAG_8(dst);
7513 	FLAG_V = VFLAG_CLEAR;
7514 	FLAG_C = CFLAG_CLEAR;
7515 	m68ki_write_8(ea, dst | 0x80);
7516 }
7517 
7518 
m68k_op_tas_8_aw(void)7519 void m68k_op_tas_8_aw(void)
7520 {
7521 	uint ea = EA_AW_8();
7522 	uint dst = m68ki_read_8(ea);
7523 
7524 	FLAG_Z = dst;
7525 	FLAG_N = NFLAG_8(dst);
7526 	FLAG_V = VFLAG_CLEAR;
7527 	FLAG_C = CFLAG_CLEAR;
7528 	m68ki_write_8(ea, dst | 0x80);
7529 }
7530 
7531 
m68k_op_tas_8_al(void)7532 void m68k_op_tas_8_al(void)
7533 {
7534 	uint ea = EA_AL_8();
7535 	uint dst = m68ki_read_8(ea);
7536 
7537 	FLAG_Z = dst;
7538 	FLAG_N = NFLAG_8(dst);
7539 	FLAG_V = VFLAG_CLEAR;
7540 	FLAG_C = CFLAG_CLEAR;
7541 	m68ki_write_8(ea, dst | 0x80);
7542 }
7543 
7544 
m68k_op_trap(void)7545 void m68k_op_trap(void)
7546 {
7547 	/* Trap#n stacks exception frame type 0 */
7548 	m68ki_exception_trapN(EXCEPTION_TRAP_BASE + (REG_IR & 0xf));	/* HJB 990403 */
7549 }
7550 
7551 
m68k_op_trapt(void)7552 void m68k_op_trapt(void)
7553 {
7554 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7555 	{
7556 		m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7557 		return;
7558 	}
7559 	m68ki_exception_illegal();
7560 }
7561 
7562 
m68k_op_trapt_16(void)7563 void m68k_op_trapt_16(void)
7564 {
7565 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7566 	{
7567 		m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7568 		return;
7569 	}
7570 	m68ki_exception_illegal();
7571 }
7572 
7573 
m68k_op_trapt_32(void)7574 void m68k_op_trapt_32(void)
7575 {
7576 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7577 	{
7578 		m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7579 		return;
7580 	}
7581 	m68ki_exception_illegal();
7582 }
7583 
7584 
m68k_op_trapf(void)7585 void m68k_op_trapf(void)
7586 {
7587 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7588 	{
7589 		return;
7590 	}
7591 	m68ki_exception_illegal();
7592 }
7593 
7594 
m68k_op_trapf_16(void)7595 void m68k_op_trapf_16(void)
7596 {
7597 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7598 	{
7599 		REG_PC += 2;
7600 		return;
7601 	}
7602 	m68ki_exception_illegal();
7603 }
7604 
7605 
m68k_op_trapf_32(void)7606 void m68k_op_trapf_32(void)
7607 {
7608 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7609 	{
7610 		REG_PC += 4;
7611 		return;
7612 	}
7613 	m68ki_exception_illegal();
7614 }
7615 
7616 
m68k_op_traphi(void)7617 void m68k_op_traphi(void)
7618 {
7619 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7620 	{
7621 		if(COND_HI())
7622 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7623 		return;
7624 	}
7625 	m68ki_exception_illegal();
7626 }
7627 
7628 
m68k_op_trapls(void)7629 void m68k_op_trapls(void)
7630 {
7631 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7632 	{
7633 		if(COND_LS())
7634 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7635 		return;
7636 	}
7637 	m68ki_exception_illegal();
7638 }
7639 
7640 
m68k_op_trapcc(void)7641 void m68k_op_trapcc(void)
7642 {
7643 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7644 	{
7645 		if(COND_CC())
7646 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7647 		return;
7648 	}
7649 	m68ki_exception_illegal();
7650 }
7651 
7652 
m68k_op_trapcs(void)7653 void m68k_op_trapcs(void)
7654 {
7655 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7656 	{
7657 		if(COND_CS())
7658 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7659 		return;
7660 	}
7661 	m68ki_exception_illegal();
7662 }
7663 
7664 
m68k_op_trapne(void)7665 void m68k_op_trapne(void)
7666 {
7667 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7668 	{
7669 		if(COND_NE())
7670 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7671 		return;
7672 	}
7673 	m68ki_exception_illegal();
7674 }
7675 
7676 
m68k_op_trapeq(void)7677 void m68k_op_trapeq(void)
7678 {
7679 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7680 	{
7681 		if(COND_EQ())
7682 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7683 		return;
7684 	}
7685 	m68ki_exception_illegal();
7686 }
7687 
7688 
m68k_op_trapvc(void)7689 void m68k_op_trapvc(void)
7690 {
7691 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7692 	{
7693 		if(COND_VC())
7694 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7695 		return;
7696 	}
7697 	m68ki_exception_illegal();
7698 }
7699 
7700 
m68k_op_trapvs(void)7701 void m68k_op_trapvs(void)
7702 {
7703 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7704 	{
7705 		if(COND_VS())
7706 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7707 		return;
7708 	}
7709 	m68ki_exception_illegal();
7710 }
7711 
7712 
m68k_op_trappl(void)7713 void m68k_op_trappl(void)
7714 {
7715 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7716 	{
7717 		if(COND_PL())
7718 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7719 		return;
7720 	}
7721 	m68ki_exception_illegal();
7722 }
7723 
7724 
m68k_op_trapmi(void)7725 void m68k_op_trapmi(void)
7726 {
7727 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7728 	{
7729 		if(COND_MI())
7730 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7731 		return;
7732 	}
7733 	m68ki_exception_illegal();
7734 }
7735 
7736 
m68k_op_trapge(void)7737 void m68k_op_trapge(void)
7738 {
7739 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7740 	{
7741 		if(COND_GE())
7742 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7743 		return;
7744 	}
7745 	m68ki_exception_illegal();
7746 }
7747 
7748 
m68k_op_traplt(void)7749 void m68k_op_traplt(void)
7750 {
7751 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7752 	{
7753 		if(COND_LT())
7754 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7755 		return;
7756 	}
7757 	m68ki_exception_illegal();
7758 }
7759 
7760 
m68k_op_trapgt(void)7761 void m68k_op_trapgt(void)
7762 {
7763 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7764 	{
7765 		if(COND_GT())
7766 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7767 		return;
7768 	}
7769 	m68ki_exception_illegal();
7770 }
7771 
7772 
m68k_op_traple(void)7773 void m68k_op_traple(void)
7774 {
7775 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7776 	{
7777 		if(COND_LE())
7778 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7779 		return;
7780 	}
7781 	m68ki_exception_illegal();
7782 }
7783 
7784 
m68k_op_traphi_16(void)7785 void m68k_op_traphi_16(void)
7786 {
7787 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7788 	{
7789 		if(COND_HI())
7790 		{
7791 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7792 			return;
7793 		}
7794 		REG_PC += 2;
7795 		return;
7796 	}
7797 	m68ki_exception_illegal();
7798 }
7799 
7800 
m68k_op_trapls_16(void)7801 void m68k_op_trapls_16(void)
7802 {
7803 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7804 	{
7805 		if(COND_LS())
7806 		{
7807 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7808 			return;
7809 		}
7810 		REG_PC += 2;
7811 		return;
7812 	}
7813 	m68ki_exception_illegal();
7814 }
7815 
7816 
m68k_op_trapcc_16(void)7817 void m68k_op_trapcc_16(void)
7818 {
7819 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7820 	{
7821 		if(COND_CC())
7822 		{
7823 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7824 			return;
7825 		}
7826 		REG_PC += 2;
7827 		return;
7828 	}
7829 	m68ki_exception_illegal();
7830 }
7831 
7832 
m68k_op_trapcs_16(void)7833 void m68k_op_trapcs_16(void)
7834 {
7835 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7836 	{
7837 		if(COND_CS())
7838 		{
7839 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7840 			return;
7841 		}
7842 		REG_PC += 2;
7843 		return;
7844 	}
7845 	m68ki_exception_illegal();
7846 }
7847 
7848 
m68k_op_trapne_16(void)7849 void m68k_op_trapne_16(void)
7850 {
7851 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7852 	{
7853 		if(COND_NE())
7854 		{
7855 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7856 			return;
7857 		}
7858 		REG_PC += 2;
7859 		return;
7860 	}
7861 	m68ki_exception_illegal();
7862 }
7863 
7864 
m68k_op_trapeq_16(void)7865 void m68k_op_trapeq_16(void)
7866 {
7867 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7868 	{
7869 		if(COND_EQ())
7870 		{
7871 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7872 			return;
7873 		}
7874 		REG_PC += 2;
7875 		return;
7876 	}
7877 	m68ki_exception_illegal();
7878 }
7879 
7880 
m68k_op_trapvc_16(void)7881 void m68k_op_trapvc_16(void)
7882 {
7883 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7884 	{
7885 		if(COND_VC())
7886 		{
7887 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7888 			return;
7889 		}
7890 		REG_PC += 2;
7891 		return;
7892 	}
7893 	m68ki_exception_illegal();
7894 }
7895 
7896 
m68k_op_trapvs_16(void)7897 void m68k_op_trapvs_16(void)
7898 {
7899 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7900 	{
7901 		if(COND_VS())
7902 		{
7903 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7904 			return;
7905 		}
7906 		REG_PC += 2;
7907 		return;
7908 	}
7909 	m68ki_exception_illegal();
7910 }
7911 
7912 
m68k_op_trappl_16(void)7913 void m68k_op_trappl_16(void)
7914 {
7915 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7916 	{
7917 		if(COND_PL())
7918 		{
7919 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7920 			return;
7921 		}
7922 		REG_PC += 2;
7923 		return;
7924 	}
7925 	m68ki_exception_illegal();
7926 }
7927 
7928 
m68k_op_trapmi_16(void)7929 void m68k_op_trapmi_16(void)
7930 {
7931 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7932 	{
7933 		if(COND_MI())
7934 		{
7935 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7936 			return;
7937 		}
7938 		REG_PC += 2;
7939 		return;
7940 	}
7941 	m68ki_exception_illegal();
7942 }
7943 
7944 
m68k_op_trapge_16(void)7945 void m68k_op_trapge_16(void)
7946 {
7947 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7948 	{
7949 		if(COND_GE())
7950 		{
7951 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7952 			return;
7953 		}
7954 		REG_PC += 2;
7955 		return;
7956 	}
7957 	m68ki_exception_illegal();
7958 }
7959 
7960 
m68k_op_traplt_16(void)7961 void m68k_op_traplt_16(void)
7962 {
7963 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7964 	{
7965 		if(COND_LT())
7966 		{
7967 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7968 			return;
7969 		}
7970 		REG_PC += 2;
7971 		return;
7972 	}
7973 	m68ki_exception_illegal();
7974 }
7975 
7976 
m68k_op_trapgt_16(void)7977 void m68k_op_trapgt_16(void)
7978 {
7979 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7980 	{
7981 		if(COND_GT())
7982 		{
7983 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
7984 			return;
7985 		}
7986 		REG_PC += 2;
7987 		return;
7988 	}
7989 	m68ki_exception_illegal();
7990 }
7991 
7992 
m68k_op_traple_16(void)7993 void m68k_op_traple_16(void)
7994 {
7995 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
7996 	{
7997 		if(COND_LE())
7998 		{
7999 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8000 			return;
8001 		}
8002 		REG_PC += 2;
8003 		return;
8004 	}
8005 	m68ki_exception_illegal();
8006 }
8007 
8008 
m68k_op_traphi_32(void)8009 void m68k_op_traphi_32(void)
8010 {
8011 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8012 	{
8013 		if(COND_HI())
8014 		{
8015 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8016 			return;
8017 		}
8018 		REG_PC += 4;
8019 		return;
8020 	}
8021 	m68ki_exception_illegal();
8022 }
8023 
8024 
m68k_op_trapls_32(void)8025 void m68k_op_trapls_32(void)
8026 {
8027 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8028 	{
8029 		if(COND_LS())
8030 		{
8031 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8032 			return;
8033 		}
8034 		REG_PC += 4;
8035 		return;
8036 	}
8037 	m68ki_exception_illegal();
8038 }
8039 
8040 
m68k_op_trapcc_32(void)8041 void m68k_op_trapcc_32(void)
8042 {
8043 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8044 	{
8045 		if(COND_CC())
8046 		{
8047 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8048 			return;
8049 		}
8050 		REG_PC += 4;
8051 		return;
8052 	}
8053 	m68ki_exception_illegal();
8054 }
8055 
8056 
m68k_op_trapcs_32(void)8057 void m68k_op_trapcs_32(void)
8058 {
8059 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8060 	{
8061 		if(COND_CS())
8062 		{
8063 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8064 			return;
8065 		}
8066 		REG_PC += 4;
8067 		return;
8068 	}
8069 	m68ki_exception_illegal();
8070 }
8071 
8072 
m68k_op_trapne_32(void)8073 void m68k_op_trapne_32(void)
8074 {
8075 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8076 	{
8077 		if(COND_NE())
8078 		{
8079 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8080 			return;
8081 		}
8082 		REG_PC += 4;
8083 		return;
8084 	}
8085 	m68ki_exception_illegal();
8086 }
8087 
8088 
m68k_op_trapeq_32(void)8089 void m68k_op_trapeq_32(void)
8090 {
8091 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8092 	{
8093 		if(COND_EQ())
8094 		{
8095 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8096 			return;
8097 		}
8098 		REG_PC += 4;
8099 		return;
8100 	}
8101 	m68ki_exception_illegal();
8102 }
8103 
8104 
m68k_op_trapvc_32(void)8105 void m68k_op_trapvc_32(void)
8106 {
8107 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8108 	{
8109 		if(COND_VC())
8110 		{
8111 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8112 			return;
8113 		}
8114 		REG_PC += 4;
8115 		return;
8116 	}
8117 	m68ki_exception_illegal();
8118 }
8119 
8120 
m68k_op_trapvs_32(void)8121 void m68k_op_trapvs_32(void)
8122 {
8123 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8124 	{
8125 		if(COND_VS())
8126 		{
8127 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8128 			return;
8129 		}
8130 		REG_PC += 4;
8131 		return;
8132 	}
8133 	m68ki_exception_illegal();
8134 }
8135 
8136 
m68k_op_trappl_32(void)8137 void m68k_op_trappl_32(void)
8138 {
8139 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8140 	{
8141 		if(COND_PL())
8142 		{
8143 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8144 			return;
8145 		}
8146 		REG_PC += 4;
8147 		return;
8148 	}
8149 	m68ki_exception_illegal();
8150 }
8151 
8152 
m68k_op_trapmi_32(void)8153 void m68k_op_trapmi_32(void)
8154 {
8155 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8156 	{
8157 		if(COND_MI())
8158 		{
8159 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8160 			return;
8161 		}
8162 		REG_PC += 4;
8163 		return;
8164 	}
8165 	m68ki_exception_illegal();
8166 }
8167 
8168 
m68k_op_trapge_32(void)8169 void m68k_op_trapge_32(void)
8170 {
8171 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8172 	{
8173 		if(COND_GE())
8174 		{
8175 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8176 			return;
8177 		}
8178 		REG_PC += 4;
8179 		return;
8180 	}
8181 	m68ki_exception_illegal();
8182 }
8183 
8184 
m68k_op_traplt_32(void)8185 void m68k_op_traplt_32(void)
8186 {
8187 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8188 	{
8189 		if(COND_LT())
8190 		{
8191 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8192 			return;
8193 		}
8194 		REG_PC += 4;
8195 		return;
8196 	}
8197 	m68ki_exception_illegal();
8198 }
8199 
8200 
m68k_op_trapgt_32(void)8201 void m68k_op_trapgt_32(void)
8202 {
8203 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8204 	{
8205 		if(COND_GT())
8206 		{
8207 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8208 			return;
8209 		}
8210 		REG_PC += 4;
8211 		return;
8212 	}
8213 	m68ki_exception_illegal();
8214 }
8215 
8216 
m68k_op_traple_32(void)8217 void m68k_op_traple_32(void)
8218 {
8219 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8220 	{
8221 		if(COND_LE())
8222 		{
8223 			m68ki_exception_trap(EXCEPTION_TRAPV);	/* HJB 990403 */
8224 			return;
8225 		}
8226 		REG_PC += 4;
8227 		return;
8228 	}
8229 	m68ki_exception_illegal();
8230 }
8231 
8232 
m68k_op_trapv(void)8233 void m68k_op_trapv(void)
8234 {
8235 	if(COND_VC())
8236 	{
8237 		return;
8238 	}
8239 	m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */
8240 }
8241 
8242 
m68k_op_tst_8_d(void)8243 void m68k_op_tst_8_d(void)
8244 {
8245 	uint res = MASK_OUT_ABOVE_8(DY);
8246 
8247 	FLAG_N = NFLAG_8(res);
8248 	FLAG_Z = res;
8249 	FLAG_V = VFLAG_CLEAR;
8250 	FLAG_C = CFLAG_CLEAR;
8251 }
8252 
8253 
m68k_op_tst_8_ai(void)8254 void m68k_op_tst_8_ai(void)
8255 {
8256 	uint res = OPER_AY_AI_8();
8257 
8258 	FLAG_N = NFLAG_8(res);
8259 	FLAG_Z = res;
8260 	FLAG_V = VFLAG_CLEAR;
8261 	FLAG_C = CFLAG_CLEAR;
8262 }
8263 
8264 
m68k_op_tst_8_pi(void)8265 void m68k_op_tst_8_pi(void)
8266 {
8267 	uint res = OPER_AY_PI_8();
8268 
8269 	FLAG_N = NFLAG_8(res);
8270 	FLAG_Z = res;
8271 	FLAG_V = VFLAG_CLEAR;
8272 	FLAG_C = CFLAG_CLEAR;
8273 }
8274 
8275 
m68k_op_tst_8_pi7(void)8276 void m68k_op_tst_8_pi7(void)
8277 {
8278 	uint res = OPER_A7_PI_8();
8279 
8280 	FLAG_N = NFLAG_8(res);
8281 	FLAG_Z = res;
8282 	FLAG_V = VFLAG_CLEAR;
8283 	FLAG_C = CFLAG_CLEAR;
8284 }
8285 
8286 
m68k_op_tst_8_pd(void)8287 void m68k_op_tst_8_pd(void)
8288 {
8289 	uint res = OPER_AY_PD_8();
8290 
8291 	FLAG_N = NFLAG_8(res);
8292 	FLAG_Z = res;
8293 	FLAG_V = VFLAG_CLEAR;
8294 	FLAG_C = CFLAG_CLEAR;
8295 }
8296 
8297 
m68k_op_tst_8_pd7(void)8298 void m68k_op_tst_8_pd7(void)
8299 {
8300 	uint res = OPER_A7_PD_8();
8301 
8302 	FLAG_N = NFLAG_8(res);
8303 	FLAG_Z = res;
8304 	FLAG_V = VFLAG_CLEAR;
8305 	FLAG_C = CFLAG_CLEAR;
8306 }
8307 
8308 
m68k_op_tst_8_di(void)8309 void m68k_op_tst_8_di(void)
8310 {
8311 	uint res = OPER_AY_DI_8();
8312 
8313 	FLAG_N = NFLAG_8(res);
8314 	FLAG_Z = res;
8315 	FLAG_V = VFLAG_CLEAR;
8316 	FLAG_C = CFLAG_CLEAR;
8317 }
8318 
8319 
m68k_op_tst_8_ix(void)8320 void m68k_op_tst_8_ix(void)
8321 {
8322 	uint res = OPER_AY_IX_8();
8323 
8324 	FLAG_N = NFLAG_8(res);
8325 	FLAG_Z = res;
8326 	FLAG_V = VFLAG_CLEAR;
8327 	FLAG_C = CFLAG_CLEAR;
8328 }
8329 
8330 
m68k_op_tst_8_aw(void)8331 void m68k_op_tst_8_aw(void)
8332 {
8333 	uint res = OPER_AW_8();
8334 
8335 	FLAG_N = NFLAG_8(res);
8336 	FLAG_Z = res;
8337 	FLAG_V = VFLAG_CLEAR;
8338 	FLAG_C = CFLAG_CLEAR;
8339 }
8340 
8341 
m68k_op_tst_8_al(void)8342 void m68k_op_tst_8_al(void)
8343 {
8344 	uint res = OPER_AL_8();
8345 
8346 	FLAG_N = NFLAG_8(res);
8347 	FLAG_Z = res;
8348 	FLAG_V = VFLAG_CLEAR;
8349 	FLAG_C = CFLAG_CLEAR;
8350 }
8351 
8352 
m68k_op_tst_8_pcdi(void)8353 void m68k_op_tst_8_pcdi(void)
8354 {
8355 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8356 	{
8357 		uint res = OPER_PCDI_8();
8358 
8359 		FLAG_N = NFLAG_8(res);
8360 		FLAG_Z = res;
8361 		FLAG_V = VFLAG_CLEAR;
8362 		FLAG_C = CFLAG_CLEAR;
8363 		return;
8364 	}
8365 	m68ki_exception_illegal();
8366 }
8367 
8368 
m68k_op_tst_8_pcix(void)8369 void m68k_op_tst_8_pcix(void)
8370 {
8371 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8372 	{
8373 		uint res = OPER_PCIX_8();
8374 
8375 		FLAG_N = NFLAG_8(res);
8376 		FLAG_Z = res;
8377 		FLAG_V = VFLAG_CLEAR;
8378 		FLAG_C = CFLAG_CLEAR;
8379 		return;
8380 	}
8381 	m68ki_exception_illegal();
8382 }
8383 
8384 
m68k_op_tst_8_i(void)8385 void m68k_op_tst_8_i(void)
8386 {
8387 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8388 	{
8389 		uint res = OPER_I_8();
8390 
8391 		FLAG_N = NFLAG_8(res);
8392 		FLAG_Z = res;
8393 		FLAG_V = VFLAG_CLEAR;
8394 		FLAG_C = CFLAG_CLEAR;
8395 		return;
8396 	}
8397 	m68ki_exception_illegal();
8398 }
8399 
8400 
m68k_op_tst_16_d(void)8401 void m68k_op_tst_16_d(void)
8402 {
8403 	uint res = MASK_OUT_ABOVE_16(DY);
8404 
8405 	FLAG_N = NFLAG_16(res);
8406 	FLAG_Z = res;
8407 	FLAG_V = VFLAG_CLEAR;
8408 	FLAG_C = CFLAG_CLEAR;
8409 }
8410 
8411 
m68k_op_tst_16_a(void)8412 void m68k_op_tst_16_a(void)
8413 {
8414 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8415 	{
8416 		uint res = MAKE_INT_16(AY);
8417 
8418 		FLAG_N = NFLAG_16(res);
8419 		FLAG_Z = res;
8420 		FLAG_V = VFLAG_CLEAR;
8421 		FLAG_C = CFLAG_CLEAR;
8422 		return;
8423 	}
8424 	m68ki_exception_illegal();
8425 }
8426 
8427 
m68k_op_tst_16_ai(void)8428 void m68k_op_tst_16_ai(void)
8429 {
8430 	uint res = OPER_AY_AI_16();
8431 
8432 	FLAG_N = NFLAG_16(res);
8433 	FLAG_Z = res;
8434 	FLAG_V = VFLAG_CLEAR;
8435 	FLAG_C = CFLAG_CLEAR;
8436 }
8437 
8438 
m68k_op_tst_16_pi(void)8439 void m68k_op_tst_16_pi(void)
8440 {
8441 	uint res = OPER_AY_PI_16();
8442 
8443 	FLAG_N = NFLAG_16(res);
8444 	FLAG_Z = res;
8445 	FLAG_V = VFLAG_CLEAR;
8446 	FLAG_C = CFLAG_CLEAR;
8447 }
8448 
8449 
m68k_op_tst_16_pd(void)8450 void m68k_op_tst_16_pd(void)
8451 {
8452 	uint res = OPER_AY_PD_16();
8453 
8454 	FLAG_N = NFLAG_16(res);
8455 	FLAG_Z = res;
8456 	FLAG_V = VFLAG_CLEAR;
8457 	FLAG_C = CFLAG_CLEAR;
8458 }
8459 
8460 
m68k_op_tst_16_di(void)8461 void m68k_op_tst_16_di(void)
8462 {
8463 	uint res = OPER_AY_DI_16();
8464 
8465 	FLAG_N = NFLAG_16(res);
8466 	FLAG_Z = res;
8467 	FLAG_V = VFLAG_CLEAR;
8468 	FLAG_C = CFLAG_CLEAR;
8469 }
8470 
8471 
m68k_op_tst_16_ix(void)8472 void m68k_op_tst_16_ix(void)
8473 {
8474 	uint res = OPER_AY_IX_16();
8475 
8476 	FLAG_N = NFLAG_16(res);
8477 	FLAG_Z = res;
8478 	FLAG_V = VFLAG_CLEAR;
8479 	FLAG_C = CFLAG_CLEAR;
8480 }
8481 
8482 
m68k_op_tst_16_aw(void)8483 void m68k_op_tst_16_aw(void)
8484 {
8485 	uint res = OPER_AW_16();
8486 
8487 	FLAG_N = NFLAG_16(res);
8488 	FLAG_Z = res;
8489 	FLAG_V = VFLAG_CLEAR;
8490 	FLAG_C = CFLAG_CLEAR;
8491 }
8492 
8493 
m68k_op_tst_16_al(void)8494 void m68k_op_tst_16_al(void)
8495 {
8496 	uint res = OPER_AL_16();
8497 
8498 	FLAG_N = NFLAG_16(res);
8499 	FLAG_Z = res;
8500 	FLAG_V = VFLAG_CLEAR;
8501 	FLAG_C = CFLAG_CLEAR;
8502 }
8503 
8504 
m68k_op_tst_16_pcdi(void)8505 void m68k_op_tst_16_pcdi(void)
8506 {
8507 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8508 	{
8509 		uint res = OPER_PCDI_16();
8510 
8511 		FLAG_N = NFLAG_16(res);
8512 		FLAG_Z = res;
8513 		FLAG_V = VFLAG_CLEAR;
8514 		FLAG_C = CFLAG_CLEAR;
8515 		return;
8516 	}
8517 	m68ki_exception_illegal();
8518 }
8519 
8520 
m68k_op_tst_16_pcix(void)8521 void m68k_op_tst_16_pcix(void)
8522 {
8523 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8524 	{
8525 		uint res = OPER_PCIX_16();
8526 
8527 		FLAG_N = NFLAG_16(res);
8528 		FLAG_Z = res;
8529 		FLAG_V = VFLAG_CLEAR;
8530 		FLAG_C = CFLAG_CLEAR;
8531 		return;
8532 	}
8533 	m68ki_exception_illegal();
8534 }
8535 
8536 
m68k_op_tst_16_i(void)8537 void m68k_op_tst_16_i(void)
8538 {
8539 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8540 	{
8541 		uint res = OPER_I_16();
8542 
8543 		FLAG_N = NFLAG_16(res);
8544 		FLAG_Z = res;
8545 		FLAG_V = VFLAG_CLEAR;
8546 		FLAG_C = CFLAG_CLEAR;
8547 		return;
8548 	}
8549 	m68ki_exception_illegal();
8550 }
8551 
8552 
m68k_op_tst_32_d(void)8553 void m68k_op_tst_32_d(void)
8554 {
8555 	uint res = DY;
8556 
8557 	FLAG_N = NFLAG_32(res);
8558 	FLAG_Z = res;
8559 	FLAG_V = VFLAG_CLEAR;
8560 	FLAG_C = CFLAG_CLEAR;
8561 }
8562 
8563 
m68k_op_tst_32_a(void)8564 void m68k_op_tst_32_a(void)
8565 {
8566 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8567 	{
8568 		uint res = AY;
8569 
8570 		FLAG_N = NFLAG_32(res);
8571 		FLAG_Z = res;
8572 		FLAG_V = VFLAG_CLEAR;
8573 		FLAG_C = CFLAG_CLEAR;
8574 		return;
8575 	}
8576 	m68ki_exception_illegal();
8577 }
8578 
8579 
m68k_op_tst_32_ai(void)8580 void m68k_op_tst_32_ai(void)
8581 {
8582 	uint res = OPER_AY_AI_32();
8583 
8584 	FLAG_N = NFLAG_32(res);
8585 	FLAG_Z = res;
8586 	FLAG_V = VFLAG_CLEAR;
8587 	FLAG_C = CFLAG_CLEAR;
8588 }
8589 
8590 
m68k_op_tst_32_pi(void)8591 void m68k_op_tst_32_pi(void)
8592 {
8593 	uint res = OPER_AY_PI_32();
8594 
8595 	FLAG_N = NFLAG_32(res);
8596 	FLAG_Z = res;
8597 	FLAG_V = VFLAG_CLEAR;
8598 	FLAG_C = CFLAG_CLEAR;
8599 }
8600 
8601 
m68k_op_tst_32_pd(void)8602 void m68k_op_tst_32_pd(void)
8603 {
8604 	uint res = OPER_AY_PD_32();
8605 
8606 	FLAG_N = NFLAG_32(res);
8607 	FLAG_Z = res;
8608 	FLAG_V = VFLAG_CLEAR;
8609 	FLAG_C = CFLAG_CLEAR;
8610 }
8611 
8612 
m68k_op_tst_32_di(void)8613 void m68k_op_tst_32_di(void)
8614 {
8615 	uint res = OPER_AY_DI_32();
8616 
8617 	FLAG_N = NFLAG_32(res);
8618 	FLAG_Z = res;
8619 	FLAG_V = VFLAG_CLEAR;
8620 	FLAG_C = CFLAG_CLEAR;
8621 }
8622 
8623 
m68k_op_tst_32_ix(void)8624 void m68k_op_tst_32_ix(void)
8625 {
8626 	uint res = OPER_AY_IX_32();
8627 
8628 	FLAG_N = NFLAG_32(res);
8629 	FLAG_Z = res;
8630 	FLAG_V = VFLAG_CLEAR;
8631 	FLAG_C = CFLAG_CLEAR;
8632 }
8633 
8634 
m68k_op_tst_32_aw(void)8635 void m68k_op_tst_32_aw(void)
8636 {
8637 	uint res = OPER_AW_32();
8638 
8639 	FLAG_N = NFLAG_32(res);
8640 	FLAG_Z = res;
8641 	FLAG_V = VFLAG_CLEAR;
8642 	FLAG_C = CFLAG_CLEAR;
8643 }
8644 
8645 
m68k_op_tst_32_al(void)8646 void m68k_op_tst_32_al(void)
8647 {
8648 	uint res = OPER_AL_32();
8649 
8650 	FLAG_N = NFLAG_32(res);
8651 	FLAG_Z = res;
8652 	FLAG_V = VFLAG_CLEAR;
8653 	FLAG_C = CFLAG_CLEAR;
8654 }
8655 
8656 
m68k_op_tst_32_pcdi(void)8657 void m68k_op_tst_32_pcdi(void)
8658 {
8659 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8660 	{
8661 		uint res = OPER_PCDI_32();
8662 
8663 		FLAG_N = NFLAG_32(res);
8664 		FLAG_Z = res;
8665 		FLAG_V = VFLAG_CLEAR;
8666 		FLAG_C = CFLAG_CLEAR;
8667 		return;
8668 	}
8669 	m68ki_exception_illegal();
8670 }
8671 
8672 
m68k_op_tst_32_pcix(void)8673 void m68k_op_tst_32_pcix(void)
8674 {
8675 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8676 	{
8677 		uint res = OPER_PCIX_32();
8678 
8679 		FLAG_N = NFLAG_32(res);
8680 		FLAG_Z = res;
8681 		FLAG_V = VFLAG_CLEAR;
8682 		FLAG_C = CFLAG_CLEAR;
8683 		return;
8684 	}
8685 	m68ki_exception_illegal();
8686 }
8687 
8688 
m68k_op_tst_32_i(void)8689 void m68k_op_tst_32_i(void)
8690 {
8691 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8692 	{
8693 		uint res = OPER_I_32();
8694 
8695 		FLAG_N = NFLAG_32(res);
8696 		FLAG_Z = res;
8697 		FLAG_V = VFLAG_CLEAR;
8698 		FLAG_C = CFLAG_CLEAR;
8699 		return;
8700 	}
8701 	m68ki_exception_illegal();
8702 }
8703 
8704 
m68k_op_unlk_32_a7(void)8705 void m68k_op_unlk_32_a7(void)
8706 {
8707 	REG_A[7] = m68ki_read_32(REG_A[7]);
8708 }
8709 
8710 
m68k_op_unlk_32(void)8711 void m68k_op_unlk_32(void)
8712 {
8713 	uint* r_dst = &AY;
8714 
8715 	REG_A[7] = *r_dst;
8716 	*r_dst = m68ki_pull_32();
8717 }
8718 
8719 
m68k_op_unpk_16_rr(void)8720 void m68k_op_unpk_16_rr(void)
8721 {
8722 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8723 	{
8724 		/* Note: DX and DY are reversed in Motorola's docs */
8725 		uint src = DY;
8726 		uint* r_dst = &DX;
8727 
8728 		*r_dst = MASK_OUT_BELOW_16(*r_dst) | (((((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16()) & 0xffff);
8729 		return;
8730 	}
8731 	m68ki_exception_illegal();
8732 }
8733 
8734 
m68k_op_unpk_16_mm_ax7(void)8735 void m68k_op_unpk_16_mm_ax7(void)
8736 {
8737 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8738 	{
8739 		/* Note: AX and AY are reversed in Motorola's docs */
8740 		uint src = OPER_AY_PD_8();
8741 		uint ea_dst;
8742 
8743 		src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
8744 		ea_dst = EA_A7_PD_8();
8745 		m68ki_write_8(ea_dst, (src >> 8) & 0xff);
8746 		ea_dst = EA_A7_PD_8();
8747 		m68ki_write_8(ea_dst, src & 0xff);
8748 		return;
8749 	}
8750 	m68ki_exception_illegal();
8751 }
8752 
8753 
m68k_op_unpk_16_mm_ay7(void)8754 void m68k_op_unpk_16_mm_ay7(void)
8755 {
8756 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8757 	{
8758 		/* Note: AX and AY are reversed in Motorola's docs */
8759 		uint src = OPER_A7_PD_8();
8760 		uint ea_dst;
8761 
8762 		src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
8763 		ea_dst = EA_AX_PD_8();
8764 		m68ki_write_8(ea_dst, (src >> 8) & 0xff);
8765 		ea_dst = EA_AX_PD_8();
8766 		m68ki_write_8(ea_dst, src & 0xff);
8767 		return;
8768 	}
8769 	m68ki_exception_illegal();
8770 }
8771 
8772 
m68k_op_unpk_16_mm_axy7(void)8773 void m68k_op_unpk_16_mm_axy7(void)
8774 {
8775 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8776 	{
8777 		uint src = OPER_A7_PD_8();
8778 		uint ea_dst;
8779 
8780 		src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
8781 		ea_dst = EA_A7_PD_8();
8782 		m68ki_write_8(ea_dst, (src >> 8) & 0xff);
8783 		ea_dst = EA_A7_PD_8();
8784 		m68ki_write_8(ea_dst, src & 0xff);
8785 		return;
8786 	}
8787 	m68ki_exception_illegal();
8788 }
8789 
8790 
m68k_op_unpk_16_mm(void)8791 void m68k_op_unpk_16_mm(void)
8792 {
8793 	if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))
8794 	{
8795 		/* Note: AX and AY are reversed in Motorola's docs */
8796 		uint src = OPER_AY_PD_8();
8797 		uint ea_dst;
8798 
8799 		src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();
8800 		ea_dst = EA_AX_PD_8();
8801 		m68ki_write_8(ea_dst, (src >> 8) & 0xff);
8802 		ea_dst = EA_AX_PD_8();
8803 		m68ki_write_8(ea_dst, src & 0xff);
8804 		return;
8805 	}
8806 	m68ki_exception_illegal();
8807 }
8808 
8809 
8810 /* ======================================================================== */
8811 /* ============================== END OF FILE ============================= */
8812 /* ======================================================================== */
8813 
8814 
8815