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