3c774ed2b138d08a507b3d809b7c0006828fe359
[picodrive.git] / cpu / musashi / m68kopnz.c
1 #include "m68kcpu.h"\r
2 \r
3 /* ======================================================================== */\r
4 /* ========================= INSTRUCTION HANDLERS ========================= */\r
5 /* ======================================================================== */\r
6 \r
7 \r
8 void 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
41 void 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
74 void 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
107 void 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
140 void 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
173 void 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
206 void 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
239 void 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
272 void 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
305 void 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
338 void 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
352 void 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
367 void 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
382 void 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
397 void 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
412 void 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
427 void 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
442 void 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
457 void 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
472 void 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
487 void 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
501 void 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
516 void 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
531 void 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
546 void 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
561 void 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
576 void 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
591 void 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
606 void 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
620 void 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
635 void 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
650 void 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
665 void 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
680 void 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
695 void 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
710 void 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
725 void 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
741 void 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
758 void 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
775 void 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
792 void 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
809 void 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
826 void 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
843 void 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
860 void 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
877 void 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
894 void 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
910 void 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
927 void 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
944 void 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
961 void 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
978 void 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
995 void 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
1012 void 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
1029 void 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
1045 void 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
1062 void 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
1079 void 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
1096 void 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
1113 void 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
1130 void 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
1147 void 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
1164 void m68k_op_nop(void)\r
1165 {\r
1166         m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
1167 }\r
1168 \r
1169 \r
1170 void 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
1184 void 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
1198 void 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
1212 void 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
1226 void 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
1240 void 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
1254 void 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
1268 void 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
1282 void 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
1296 void 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
1310 void 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
1324 void 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
1338 void 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
1352 void 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
1366 void 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
1380 void 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
1394 void 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
1408 void 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
1422 void 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
1434 void 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
1448 void 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
1462 void 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
1476 void 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
1490 void 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
1504 void 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
1518 void 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
1532 void 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
1543 void 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
1554 void 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
1565 void 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
1576 void 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
1587 void 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
1598 void 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
1609 void 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
1620 void 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
1631 void 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
1642 void 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
1653 void 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
1664 void 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
1675 void 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
1686 void 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
1697 void 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
1708 void 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
1719 void 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
1730 void 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
1741 void 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
1752 void 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
1763 void 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
1774 void 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
1785 void 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
1796 void 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
1807 void 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
1818 void 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
1829 void 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
1840 void 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
1851 void 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
1862 void 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
1873 void 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
1884 void 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
1895 void 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
1906 void 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
1917 void 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
1931 void 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
1945 void 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
1959 void 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
1973 void 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
1987 void 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
2001 void 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
2015 void 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
2029 void 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
2043 void 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
2057 void 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
2071 void 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
2085 void 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
2099 void 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
2113 void 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
2127 void 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
2141 void 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
2155 void 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
2169 void 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
2183 void 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
2197 void 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
2211 void 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
2225 void 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
2239 void 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
2250 void 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
2265 void 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
2280 void 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
2295 void 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
2310 void 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
2325 void 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
2340 void 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
2355 void 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
2370 void 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
2385 void 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
2396 void 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
2411 void 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
2426 void 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
2441 void 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
2456 void 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
2471 void 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
2486 void 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
2501 void 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
2512 void 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
2527 void 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
2542 void 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
2557 void 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
2572 void 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
2587 void 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
2602 void 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
2617 void 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
2623 void 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
2636 void 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
2651 void 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
2668 void 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
2685 void 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
2701 void 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
2718 void 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
2726 void 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
2734 void 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
2742 void 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
2750 void 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
2758 void 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
2766 void 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
2774 void 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
2785 void 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
2797 void 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
2817 void 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
2836 void 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
2855 void 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
2882 void 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
2909 void 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
2936 void 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
2951 void 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
2966 void 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
2981 void 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
2996 void 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
3011 void 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
3026 void 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
3041 void 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
3061 void 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
3080 void 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
3099 void 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
3134 void 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
3169 void 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                 if (shift == 0) FLAG_C = src << 8; // notaz\r
3185                 FLAG_N = NFLAG_32(res);\r
3186                 FLAG_Z = res;\r
3187                 FLAG_V = VFLAG_CLEAR;\r
3188                 return;\r
3189         }\r
3190 \r
3191         FLAG_C = CFLAG_CLEAR;\r
3192         FLAG_N = NFLAG_32(src);\r
3193         FLAG_Z = src;\r
3194         FLAG_V = VFLAG_CLEAR;\r
3195 }\r
3196 \r
3197 \r
3198 void m68k_op_rol_16_ai(void)\r
3199 {\r
3200         uint ea = EA_AY_AI_16();\r
3201         uint src = m68ki_read_16(ea);\r
3202         uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));\r
3203 \r
3204         m68ki_write_16(ea, res);\r
3205 \r
3206         FLAG_N = NFLAG_16(res);\r
3207         FLAG_Z = res;\r
3208         FLAG_C = src >> 7;\r
3209         FLAG_V = VFLAG_CLEAR;\r
3210 }\r
3211 \r
3212 \r
3213 void m68k_op_rol_16_pi(void)\r
3214 {\r
3215         uint ea = EA_AY_PI_16();\r
3216         uint src = m68ki_read_16(ea);\r
3217         uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));\r
3218 \r
3219         m68ki_write_16(ea, res);\r
3220 \r
3221         FLAG_N = NFLAG_16(res);\r
3222         FLAG_Z = res;\r
3223         FLAG_C = src >> 7;\r
3224         FLAG_V = VFLAG_CLEAR;\r
3225 }\r
3226 \r
3227 \r
3228 void m68k_op_rol_16_pd(void)\r
3229 {\r
3230         uint ea = EA_AY_PD_16();\r
3231         uint src = m68ki_read_16(ea);\r
3232         uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));\r
3233 \r
3234         m68ki_write_16(ea, res);\r
3235 \r
3236         FLAG_N = NFLAG_16(res);\r
3237         FLAG_Z = res;\r
3238         FLAG_C = src >> 7;\r
3239         FLAG_V = VFLAG_CLEAR;\r
3240 }\r
3241 \r
3242 \r
3243 void m68k_op_rol_16_di(void)\r
3244 {\r
3245         uint ea = EA_AY_DI_16();\r
3246         uint src = m68ki_read_16(ea);\r
3247         uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));\r
3248 \r
3249         m68ki_write_16(ea, res);\r
3250 \r
3251         FLAG_N = NFLAG_16(res);\r
3252         FLAG_Z = res;\r
3253         FLAG_C = src >> 7;\r
3254         FLAG_V = VFLAG_CLEAR;\r
3255 }\r
3256 \r
3257 \r
3258 void m68k_op_rol_16_ix(void)\r
3259 {\r
3260         uint ea = EA_AY_IX_16();\r
3261         uint src = m68ki_read_16(ea);\r
3262         uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));\r
3263 \r
3264         m68ki_write_16(ea, res);\r
3265 \r
3266         FLAG_N = NFLAG_16(res);\r
3267         FLAG_Z = res;\r
3268         FLAG_C = src >> 7;\r
3269         FLAG_V = VFLAG_CLEAR;\r
3270 }\r
3271 \r
3272 \r
3273 void m68k_op_rol_16_aw(void)\r
3274 {\r
3275         uint ea = EA_AW_16();\r
3276         uint src = m68ki_read_16(ea);\r
3277         uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));\r
3278 \r
3279         m68ki_write_16(ea, res);\r
3280 \r
3281         FLAG_N = NFLAG_16(res);\r
3282         FLAG_Z = res;\r
3283         FLAG_C = src >> 7;\r
3284         FLAG_V = VFLAG_CLEAR;\r
3285 }\r
3286 \r
3287 \r
3288 void m68k_op_rol_16_al(void)\r
3289 {\r
3290         uint ea = EA_AL_16();\r
3291         uint src = m68ki_read_16(ea);\r
3292         uint res = MASK_OUT_ABOVE_16(ROL_16(src, 1));\r
3293 \r
3294         m68ki_write_16(ea, res);\r
3295 \r
3296         FLAG_N = NFLAG_16(res);\r
3297         FLAG_Z = res;\r
3298         FLAG_C = src >> 7;\r
3299         FLAG_V = VFLAG_CLEAR;\r
3300 }\r
3301 \r
3302 \r
3303 void m68k_op_roxr_8_s(void)\r
3304 {\r
3305         uint* r_dst = &DY;\r
3306         uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
3307         uint src = MASK_OUT_ABOVE_8(*r_dst);\r
3308         uint res = ROR_9(src | (XFLAG_AS_1() << 8), shift);\r
3309 \r
3310         if(shift != 0)\r
3311                 USE_CYCLES(shift<<CYC_SHIFT);\r
3312 \r
3313         FLAG_C = FLAG_X = res;\r
3314         res = MASK_OUT_ABOVE_8(res);\r
3315 \r
3316         *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
3317 \r
3318         FLAG_N = NFLAG_8(res);\r
3319         FLAG_Z = res;\r
3320         FLAG_V = VFLAG_CLEAR;\r
3321 }\r
3322 \r
3323 \r
3324 void m68k_op_roxr_16_s(void)\r
3325 {\r
3326         uint* r_dst = &DY;\r
3327         uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
3328         uint src = MASK_OUT_ABOVE_16(*r_dst);\r
3329         uint res = ROR_17(src | (XFLAG_AS_1() << 16), shift);\r
3330 \r
3331         if(shift != 0)\r
3332                 USE_CYCLES(shift<<CYC_SHIFT);\r
3333 \r
3334         FLAG_C = FLAG_X = res >> 8;\r
3335         res = MASK_OUT_ABOVE_16(res);\r
3336 \r
3337         *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
3338 \r
3339         FLAG_N = NFLAG_16(res);\r
3340         FLAG_Z = res;\r
3341         FLAG_V = VFLAG_CLEAR;\r
3342 }\r
3343 \r
3344 \r
3345 void m68k_op_roxr_32_s(void)\r
3346 {\r
3347 #if M68K_USE_64_BIT\r
3348 \r
3349         uint*  r_dst = &DY;\r
3350         uint   shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
3351         uint64 src   = *r_dst;\r
3352         uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);\r
3353 \r
3354         if(shift != 0)\r
3355                 USE_CYCLES(shift<<CYC_SHIFT);\r
3356 \r
3357         res = ROR_33_64(res, shift);\r
3358 \r
3359         FLAG_C = FLAG_X = res >> 24;\r
3360         res = MASK_OUT_ABOVE_32(res);\r
3361 \r
3362         *r_dst =  res;\r
3363 \r
3364         FLAG_N = NFLAG_32(res);\r
3365         FLAG_Z = res;\r
3366         FLAG_V = VFLAG_CLEAR;\r
3367 \r
3368 #else\r
3369 \r
3370         uint* r_dst = &DY;\r
3371         uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
3372         uint src = *r_dst;\r
3373         uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift)));\r
3374         uint new_x_flag = src & (1 << (shift - 1));\r
3375 \r
3376         if(shift != 0)\r
3377                 USE_CYCLES(shift<<CYC_SHIFT);\r
3378 \r
3379         *r_dst = res;\r
3380 \r
3381         FLAG_C = FLAG_X = (new_x_flag != 0)<<8;\r
3382         FLAG_N = NFLAG_32(res);\r
3383         FLAG_Z = res;\r
3384         FLAG_V = VFLAG_CLEAR;\r
3385 \r
3386 #endif\r
3387 }\r
3388 \r
3389 \r
3390 void m68k_op_roxr_8_r(void)\r
3391 {\r
3392         uint* r_dst = &DY;\r
3393         uint orig_shift = DX & 0x3f;\r
3394 \r
3395         if(orig_shift != 0)\r
3396         {\r
3397                 uint shift = orig_shift % 9;\r
3398                 uint src   = MASK_OUT_ABOVE_8(*r_dst);\r
3399                 uint res   = ROR_9(src | (XFLAG_AS_1() << 8), shift);\r
3400 \r
3401                 USE_CYCLES(orig_shift<<CYC_SHIFT);\r
3402 \r
3403                 FLAG_C = FLAG_X = res;\r
3404                 res = MASK_OUT_ABOVE_8(res);\r
3405 \r
3406                 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
3407                 FLAG_N = NFLAG_8(res);\r
3408                 FLAG_Z = res;\r
3409                 FLAG_V = VFLAG_CLEAR;\r
3410                 return;\r
3411         }\r
3412 \r
3413         FLAG_C = FLAG_X;\r
3414         FLAG_N = NFLAG_8(*r_dst);\r
3415         FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);\r
3416         FLAG_V = VFLAG_CLEAR;\r
3417 }\r
3418 \r
3419 \r
3420 void m68k_op_roxr_16_r(void)\r
3421 {\r
3422         uint* r_dst = &DY;\r
3423         uint orig_shift = DX & 0x3f;\r
3424 \r
3425         if(orig_shift != 0)\r
3426         {\r
3427                 uint shift = orig_shift % 17;\r
3428                 uint src   = MASK_OUT_ABOVE_16(*r_dst);\r
3429                 uint res   = ROR_17(src | (XFLAG_AS_1() << 16), shift);\r
3430 \r
3431                 USE_CYCLES(orig_shift<<CYC_SHIFT);\r
3432 \r
3433                 FLAG_C = FLAG_X = res >> 8;\r
3434                 res = MASK_OUT_ABOVE_16(res);\r
3435 \r
3436                 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
3437                 FLAG_N = NFLAG_16(res);\r
3438                 FLAG_Z = res;\r
3439                 FLAG_V = VFLAG_CLEAR;\r
3440                 return;\r
3441         }\r
3442 \r
3443         FLAG_C = FLAG_X;\r
3444         FLAG_N = NFLAG_16(*r_dst);\r
3445         FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);\r
3446         FLAG_V = VFLAG_CLEAR;\r
3447 }\r
3448 \r
3449 \r
3450 void m68k_op_roxr_32_r(void)\r
3451 {\r
3452 #if M68K_USE_64_BIT\r
3453 \r
3454         uint*  r_dst = &DY;\r
3455         uint   orig_shift = DX & 0x3f;\r
3456 \r
3457         if(orig_shift != 0)\r
3458         {\r
3459                 uint   shift = orig_shift % 33;\r
3460                 uint64 src   = *r_dst;\r
3461                 uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);\r
3462 \r
3463                 res = ROR_33_64(res, shift);\r
3464 \r
3465                 USE_CYCLES(orig_shift<<CYC_SHIFT);\r
3466 \r
3467                 FLAG_C = FLAG_X = res >> 24;\r
3468                 res = MASK_OUT_ABOVE_32(res);\r
3469 \r
3470                 *r_dst = res;\r
3471                 FLAG_N = NFLAG_32(res);\r
3472                 FLAG_Z = res;\r
3473                 FLAG_V = VFLAG_CLEAR;\r
3474                 return;\r
3475         }\r
3476 \r
3477         FLAG_C = FLAG_X;\r
3478         FLAG_N = NFLAG_32(*r_dst);\r
3479         FLAG_Z = *r_dst;\r
3480         FLAG_V = VFLAG_CLEAR;\r
3481 \r
3482 #else\r
3483 \r
3484         uint* r_dst = &DY;\r
3485         uint orig_shift = DX & 0x3f;\r
3486         uint shift = orig_shift % 33;\r
3487         uint src = *r_dst;\r
3488         uint res = MASK_OUT_ABOVE_32((ROR_33(src, shift) & ~(1 << (32 - shift))) | (XFLAG_AS_1() << (32 - shift)));\r
3489         uint new_x_flag = src & (1 << (shift - 1));\r
3490 \r
3491         if(orig_shift != 0)\r
3492                 USE_CYCLES(orig_shift<<CYC_SHIFT);\r
3493 \r
3494         if(shift != 0)\r
3495         {\r
3496                 *r_dst = res;\r
3497                 FLAG_X = (new_x_flag != 0)<<8;\r
3498         }\r
3499         else\r
3500                 res = src;\r
3501         FLAG_C = FLAG_X;\r
3502         FLAG_N = NFLAG_32(res);\r
3503         FLAG_Z = res;\r
3504         FLAG_V = VFLAG_CLEAR;\r
3505 \r
3506 #endif\r
3507 }\r
3508 \r
3509 \r
3510 void m68k_op_roxr_16_ai(void)\r
3511 {\r
3512         uint ea = EA_AY_AI_16();\r
3513         uint src = m68ki_read_16(ea);\r
3514         uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);\r
3515 \r
3516         FLAG_C = FLAG_X = res >> 8;\r
3517         res = MASK_OUT_ABOVE_16(res);\r
3518 \r
3519         m68ki_write_16(ea, res);\r
3520 \r
3521         FLAG_N = NFLAG_16(res);\r
3522         FLAG_Z = res;\r
3523         FLAG_V = VFLAG_CLEAR;\r
3524 }\r
3525 \r
3526 \r
3527 void m68k_op_roxr_16_pi(void)\r
3528 {\r
3529         uint ea = EA_AY_PI_16();\r
3530         uint src = m68ki_read_16(ea);\r
3531         uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);\r
3532 \r
3533         FLAG_C = FLAG_X = res >> 8;\r
3534         res = MASK_OUT_ABOVE_16(res);\r
3535 \r
3536         m68ki_write_16(ea, res);\r
3537 \r
3538         FLAG_N = NFLAG_16(res);\r
3539         FLAG_Z = res;\r
3540         FLAG_V = VFLAG_CLEAR;\r
3541 }\r
3542 \r
3543 \r
3544 void m68k_op_roxr_16_pd(void)\r
3545 {\r
3546         uint ea = EA_AY_PD_16();\r
3547         uint src = m68ki_read_16(ea);\r
3548         uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);\r
3549 \r
3550         FLAG_C = FLAG_X = res >> 8;\r
3551         res = MASK_OUT_ABOVE_16(res);\r
3552 \r
3553         m68ki_write_16(ea, res);\r
3554 \r
3555         FLAG_N = NFLAG_16(res);\r
3556         FLAG_Z = res;\r
3557         FLAG_V = VFLAG_CLEAR;\r
3558 }\r
3559 \r
3560 \r
3561 void m68k_op_roxr_16_di(void)\r
3562 {\r
3563         uint ea = EA_AY_DI_16();\r
3564         uint src = m68ki_read_16(ea);\r
3565         uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);\r
3566 \r
3567         FLAG_C = FLAG_X = res >> 8;\r
3568         res = MASK_OUT_ABOVE_16(res);\r
3569 \r
3570         m68ki_write_16(ea, res);\r
3571 \r
3572         FLAG_N = NFLAG_16(res);\r
3573         FLAG_Z = res;\r
3574         FLAG_V = VFLAG_CLEAR;\r
3575 }\r
3576 \r
3577 \r
3578 void m68k_op_roxr_16_ix(void)\r
3579 {\r
3580         uint ea = EA_AY_IX_16();\r
3581         uint src = m68ki_read_16(ea);\r
3582         uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);\r
3583 \r
3584         FLAG_C = FLAG_X = res >> 8;\r
3585         res = MASK_OUT_ABOVE_16(res);\r
3586 \r
3587         m68ki_write_16(ea, res);\r
3588 \r
3589         FLAG_N = NFLAG_16(res);\r
3590         FLAG_Z = res;\r
3591         FLAG_V = VFLAG_CLEAR;\r
3592 }\r
3593 \r
3594 \r
3595 void m68k_op_roxr_16_aw(void)\r
3596 {\r
3597         uint ea = EA_AW_16();\r
3598         uint src = m68ki_read_16(ea);\r
3599         uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);\r
3600 \r
3601         FLAG_C = FLAG_X = res >> 8;\r
3602         res = MASK_OUT_ABOVE_16(res);\r
3603 \r
3604         m68ki_write_16(ea, res);\r
3605 \r
3606         FLAG_N = NFLAG_16(res);\r
3607         FLAG_Z = res;\r
3608         FLAG_V = VFLAG_CLEAR;\r
3609 }\r
3610 \r
3611 \r
3612 void m68k_op_roxr_16_al(void)\r
3613 {\r
3614         uint ea = EA_AL_16();\r
3615         uint src = m68ki_read_16(ea);\r
3616         uint res = ROR_17(src | (XFLAG_AS_1() << 16), 1);\r
3617 \r
3618         FLAG_C = FLAG_X = res >> 8;\r
3619         res = MASK_OUT_ABOVE_16(res);\r
3620 \r
3621         m68ki_write_16(ea, res);\r
3622 \r
3623         FLAG_N = NFLAG_16(res);\r
3624         FLAG_Z = res;\r
3625         FLAG_V = VFLAG_CLEAR;\r
3626 }\r
3627 \r
3628 \r
3629 void m68k_op_roxl_8_s(void)\r
3630 {\r
3631         uint* r_dst = &DY;\r
3632         uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
3633         uint src = MASK_OUT_ABOVE_8(*r_dst);\r
3634         uint res = ROL_9(src | (XFLAG_AS_1() << 8), shift);\r
3635 \r
3636         if(shift != 0)\r
3637                 USE_CYCLES(shift<<CYC_SHIFT);\r
3638 \r
3639         FLAG_C = FLAG_X = res;\r
3640         res = MASK_OUT_ABOVE_8(res);\r
3641 \r
3642         *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
3643 \r
3644         FLAG_N = NFLAG_8(res);\r
3645         FLAG_Z = res;\r
3646         FLAG_V = VFLAG_CLEAR;\r
3647 }\r
3648 \r
3649 \r
3650 void m68k_op_roxl_16_s(void)\r
3651 {\r
3652         uint* r_dst = &DY;\r
3653         uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
3654         uint src = MASK_OUT_ABOVE_16(*r_dst);\r
3655         uint res = ROL_17(src | (XFLAG_AS_1() << 16), shift);\r
3656 \r
3657         if(shift != 0)\r
3658                 USE_CYCLES(shift<<CYC_SHIFT);\r
3659 \r
3660         FLAG_C = FLAG_X = res >> 8;\r
3661         res = MASK_OUT_ABOVE_16(res);\r
3662 \r
3663         *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
3664 \r
3665         FLAG_N = NFLAG_16(res);\r
3666         FLAG_Z = res;\r
3667         FLAG_V = VFLAG_CLEAR;\r
3668 }\r
3669 \r
3670 \r
3671 void m68k_op_roxl_32_s(void)\r
3672 {\r
3673 #if M68K_USE_64_BIT\r
3674 \r
3675         uint*  r_dst = &DY;\r
3676         uint   shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
3677         uint64 src   = *r_dst;\r
3678         uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);\r
3679 \r
3680         if(shift != 0)\r
3681                 USE_CYCLES(shift<<CYC_SHIFT);\r
3682 \r
3683         res = ROL_33_64(res, shift);\r
3684 \r
3685         FLAG_C = FLAG_X = res >> 24;\r
3686         res = MASK_OUT_ABOVE_32(res);\r
3687 \r
3688         *r_dst = res;\r
3689 \r
3690         FLAG_N = NFLAG_32(res);\r
3691         FLAG_Z = res;\r
3692         FLAG_V = VFLAG_CLEAR;\r
3693 \r
3694 #else\r
3695 \r
3696         uint* r_dst = &DY;\r
3697         uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
3698         uint src = *r_dst;\r
3699         uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1)));\r
3700         uint new_x_flag = src & (1 << (32 - shift));\r
3701 \r
3702         if(shift != 0)\r
3703                 USE_CYCLES(shift<<CYC_SHIFT);\r
3704 \r
3705         *r_dst = res;\r
3706 \r
3707         FLAG_C = FLAG_X = (new_x_flag != 0)<<8;\r
3708         FLAG_N = NFLAG_32(res);\r
3709         FLAG_Z = res;\r
3710         FLAG_V = VFLAG_CLEAR;\r
3711 \r
3712 #endif\r
3713 }\r
3714 \r
3715 \r
3716 void m68k_op_roxl_8_r(void)\r
3717 {\r
3718         uint* r_dst = &DY;\r
3719         uint orig_shift = DX & 0x3f;\r
3720 \r
3721 \r
3722         if(orig_shift != 0)\r
3723         {\r
3724                 uint shift = orig_shift % 9;\r
3725                 uint src   = MASK_OUT_ABOVE_8(*r_dst);\r
3726                 uint res   = ROL_9(src | (XFLAG_AS_1() << 8), shift);\r
3727 \r
3728                 USE_CYCLES(orig_shift<<CYC_SHIFT);\r
3729 \r
3730                 FLAG_C = FLAG_X = res;\r
3731                 res = MASK_OUT_ABOVE_8(res);\r
3732 \r
3733                 *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
3734                 FLAG_N = NFLAG_8(res);\r
3735                 FLAG_Z = res;\r
3736                 FLAG_V = VFLAG_CLEAR;\r
3737                 return;\r
3738         }\r
3739 \r
3740         FLAG_C = FLAG_X;\r
3741         FLAG_N = NFLAG_8(*r_dst);\r
3742         FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);\r
3743         FLAG_V = VFLAG_CLEAR;\r
3744 }\r
3745 \r
3746 \r
3747 void m68k_op_roxl_16_r(void)\r
3748 {\r
3749         uint* r_dst = &DY;\r
3750         uint orig_shift = DX & 0x3f;\r
3751 \r
3752         if(orig_shift != 0)\r
3753         {\r
3754                 uint shift = orig_shift % 17;\r
3755                 uint src   = MASK_OUT_ABOVE_16(*r_dst);\r
3756                 uint res   = ROL_17(src | (XFLAG_AS_1() << 16), shift);\r
3757 \r
3758                 USE_CYCLES(orig_shift<<CYC_SHIFT);\r
3759 \r
3760                 FLAG_C = FLAG_X = res >> 8;\r
3761                 res = MASK_OUT_ABOVE_16(res);\r
3762 \r
3763                 *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
3764                 FLAG_N = NFLAG_16(res);\r
3765                 FLAG_Z = res;\r
3766                 FLAG_V = VFLAG_CLEAR;\r
3767                 return;\r
3768         }\r
3769 \r
3770         FLAG_C = FLAG_X;\r
3771         FLAG_N = NFLAG_16(*r_dst);\r
3772         FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);\r
3773         FLAG_V = VFLAG_CLEAR;\r
3774 }\r
3775 \r
3776 \r
3777 void m68k_op_roxl_32_r(void)\r
3778 {\r
3779 #if M68K_USE_64_BIT\r
3780 \r
3781         uint*  r_dst = &DY;\r
3782         uint   orig_shift = DX & 0x3f;\r
3783 \r
3784         if(orig_shift != 0)\r
3785         {\r
3786                 uint   shift = orig_shift % 33;\r
3787                 uint64 src   = *r_dst;\r
3788                 uint64 res   = src | (((uint64)XFLAG_AS_1()) << 32);\r
3789 \r
3790                 res = ROL_33_64(res, shift);\r
3791 \r
3792                 USE_CYCLES(orig_shift<<CYC_SHIFT);\r
3793 \r
3794                 FLAG_C = FLAG_X = res >> 24;\r
3795                 res = MASK_OUT_ABOVE_32(res);\r
3796 \r
3797                 *r_dst = res;\r
3798                 FLAG_N = NFLAG_32(res);\r
3799                 FLAG_Z = res;\r
3800                 FLAG_V = VFLAG_CLEAR;\r
3801                 return;\r
3802         }\r
3803 \r
3804         FLAG_C = FLAG_X;\r
3805         FLAG_N = NFLAG_32(*r_dst);\r
3806         FLAG_Z = *r_dst;\r
3807         FLAG_V = VFLAG_CLEAR;\r
3808 \r
3809 #else\r
3810 \r
3811         uint* r_dst = &DY;\r
3812         uint orig_shift = DX & 0x3f;\r
3813         uint shift = orig_shift % 33;\r
3814         uint src = *r_dst;\r
3815         uint res = MASK_OUT_ABOVE_32((ROL_33(src, shift) & ~(1 << (shift - 1))) | (XFLAG_AS_1() << (shift - 1)));\r
3816         uint new_x_flag = src & (1 << (32 - shift));\r
3817 \r
3818         if(orig_shift != 0)\r
3819                 USE_CYCLES(orig_shift<<CYC_SHIFT);\r
3820 \r
3821         if(shift != 0)\r
3822         {\r
3823                 *r_dst = res;\r
3824                 FLAG_X = (new_x_flag != 0)<<8;\r
3825         }\r
3826         else\r
3827                 res = src;\r
3828         FLAG_C = FLAG_X;\r
3829         FLAG_N = NFLAG_32(res);\r
3830         FLAG_Z = res;\r
3831         FLAG_V = VFLAG_CLEAR;\r
3832 \r
3833 #endif\r
3834 }\r
3835 \r
3836 \r
3837 void m68k_op_roxl_16_ai(void)\r
3838 {\r
3839         uint ea = EA_AY_AI_16();\r
3840         uint src = m68ki_read_16(ea);\r
3841         uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);\r
3842 \r
3843         FLAG_C = FLAG_X = res >> 8;\r
3844         res = MASK_OUT_ABOVE_16(res);\r
3845 \r
3846         m68ki_write_16(ea, res);\r
3847 \r
3848         FLAG_N = NFLAG_16(res);\r
3849         FLAG_Z = res;\r
3850         FLAG_V = VFLAG_CLEAR;\r
3851 }\r
3852 \r
3853 \r
3854 void m68k_op_roxl_16_pi(void)\r
3855 {\r
3856         uint ea = EA_AY_PI_16();\r
3857         uint src = m68ki_read_16(ea);\r
3858         uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);\r
3859 \r
3860         FLAG_C = FLAG_X = res >> 8;\r
3861         res = MASK_OUT_ABOVE_16(res);\r
3862 \r
3863         m68ki_write_16(ea, res);\r
3864 \r
3865         FLAG_N = NFLAG_16(res);\r
3866         FLAG_Z = res;\r
3867         FLAG_V = VFLAG_CLEAR;\r
3868 }\r
3869 \r
3870 \r
3871 void m68k_op_roxl_16_pd(void)\r
3872 {\r
3873         uint ea = EA_AY_PD_16();\r
3874         uint src = m68ki_read_16(ea);\r
3875         uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);\r
3876 \r
3877         FLAG_C = FLAG_X = res >> 8;\r
3878         res = MASK_OUT_ABOVE_16(res);\r
3879 \r
3880         m68ki_write_16(ea, res);\r
3881 \r
3882         FLAG_N = NFLAG_16(res);\r
3883         FLAG_Z = res;\r
3884         FLAG_V = VFLAG_CLEAR;\r
3885 }\r
3886 \r
3887 \r
3888 void m68k_op_roxl_16_di(void)\r
3889 {\r
3890         uint ea = EA_AY_DI_16();\r
3891         uint src = m68ki_read_16(ea);\r
3892         uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);\r
3893 \r
3894         FLAG_C = FLAG_X = res >> 8;\r
3895         res = MASK_OUT_ABOVE_16(res);\r
3896 \r
3897         m68ki_write_16(ea, res);\r
3898 \r
3899         FLAG_N = NFLAG_16(res);\r
3900         FLAG_Z = res;\r
3901         FLAG_V = VFLAG_CLEAR;\r
3902 }\r
3903 \r
3904 \r
3905 void m68k_op_roxl_16_ix(void)\r
3906 {\r
3907         uint ea = EA_AY_IX_16();\r
3908         uint src = m68ki_read_16(ea);\r
3909         uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);\r
3910 \r
3911         FLAG_C = FLAG_X = res >> 8;\r
3912         res = MASK_OUT_ABOVE_16(res);\r
3913 \r
3914         m68ki_write_16(ea, res);\r
3915 \r
3916         FLAG_N = NFLAG_16(res);\r
3917         FLAG_Z = res;\r
3918         FLAG_V = VFLAG_CLEAR;\r
3919 }\r
3920 \r
3921 \r
3922 void m68k_op_roxl_16_aw(void)\r
3923 {\r
3924         uint ea = EA_AW_16();\r
3925         uint src = m68ki_read_16(ea);\r
3926         uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);\r
3927 \r
3928         FLAG_C = FLAG_X = res >> 8;\r
3929         res = MASK_OUT_ABOVE_16(res);\r
3930 \r
3931         m68ki_write_16(ea, res);\r
3932 \r
3933         FLAG_N = NFLAG_16(res);\r
3934         FLAG_Z = res;\r
3935         FLAG_V = VFLAG_CLEAR;\r
3936 }\r
3937 \r
3938 \r
3939 void m68k_op_roxl_16_al(void)\r
3940 {\r
3941         uint ea = EA_AL_16();\r
3942         uint src = m68ki_read_16(ea);\r
3943         uint res = ROL_17(src | (XFLAG_AS_1() << 16), 1);\r
3944 \r
3945         FLAG_C = FLAG_X = res >> 8;\r
3946         res = MASK_OUT_ABOVE_16(res);\r
3947 \r
3948         m68ki_write_16(ea, res);\r
3949 \r
3950         FLAG_N = NFLAG_16(res);\r
3951         FLAG_Z = res;\r
3952         FLAG_V = VFLAG_CLEAR;\r
3953 }\r
3954 \r
3955 \r
3956 void m68k_op_rtd_32(void)\r
3957 {\r
3958         if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
3959         {\r
3960                 uint new_pc = m68ki_pull_32();\r
3961 \r
3962                 m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
3963                 REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16()));\r
3964                 m68ki_jump(new_pc);\r
3965                 return;\r
3966         }\r
3967         m68ki_exception_illegal();\r
3968 }\r
3969 \r
3970 \r
3971 void m68k_op_rte_32(void)\r
3972 {\r
3973         if(FLAG_S)\r
3974         {\r
3975                 uint new_sr;\r
3976                 uint new_pc;\r
3977                 uint format_word;\r
3978 \r
3979                 m68ki_rte_callback();              /* auto-disable (see m68kcpu.h) */\r
3980                 m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
3981 \r
3982                 if(CPU_TYPE_IS_000(CPU_TYPE))\r
3983                 {\r
3984                         new_sr = m68ki_pull_16();\r
3985                         new_pc = m68ki_pull_32();\r
3986                         m68ki_jump(new_pc);\r
3987                         m68ki_set_sr(new_sr);\r
3988 \r
3989                         CPU_INSTR_MODE = INSTRUCTION_YES;\r
3990                         CPU_RUN_MODE = RUN_MODE_NORMAL;\r
3991 \r
3992                         return;\r
3993                 }\r
3994 \r
3995                 if(CPU_TYPE_IS_010(CPU_TYPE))\r
3996                 {\r
3997                         format_word = m68ki_read_16(REG_A[7]+6) >> 12;\r
3998                         if(format_word == 0)\r
3999                         {\r
4000                                 new_sr = m68ki_pull_16();\r
4001                                 new_pc = m68ki_pull_32();\r
4002                                 m68ki_fake_pull_16();   /* format word */\r
4003                                 m68ki_jump(new_pc);\r
4004                                 m68ki_set_sr(new_sr);\r
4005                                 CPU_INSTR_MODE = INSTRUCTION_YES;\r
4006                                 CPU_RUN_MODE = RUN_MODE_NORMAL;\r
4007                                 return;\r
4008                         }\r
4009                         CPU_INSTR_MODE = INSTRUCTION_YES;\r
4010                         CPU_RUN_MODE = RUN_MODE_NORMAL;\r
4011                         /* Not handling bus fault (9) */\r
4012                         m68ki_exception_format_error();\r
4013                         return;\r
4014                 }\r
4015 \r
4016                 /* Otherwise it's 020 */\r
4017 rte_loop:\r
4018                 format_word = m68ki_read_16(REG_A[7]+6) >> 12;\r
4019                 switch(format_word)\r
4020                 {\r
4021                         case 0: /* Normal */\r
4022                                 new_sr = m68ki_pull_16();\r
4023                                 new_pc = m68ki_pull_32();\r
4024                                 m68ki_fake_pull_16();   /* format word */\r
4025                                 m68ki_jump(new_pc);\r
4026                                 m68ki_set_sr(new_sr);\r
4027                                 CPU_INSTR_MODE = INSTRUCTION_YES;\r
4028                                 CPU_RUN_MODE = RUN_MODE_NORMAL;\r
4029                                 return;\r
4030                         case 1: /* Throwaway */\r
4031                                 new_sr = m68ki_pull_16();\r
4032                                 m68ki_fake_pull_32();   /* program counter */\r
4033                                 m68ki_fake_pull_16();   /* format word */\r
4034                                 m68ki_set_sr_noint(new_sr);\r
4035                                 goto rte_loop;\r
4036                         case 2: /* Trap */\r
4037                                 new_sr = m68ki_pull_16();\r
4038                                 new_pc = m68ki_pull_32();\r
4039                                 m68ki_fake_pull_16();   /* format word */\r
4040                                 m68ki_fake_pull_32();   /* address */\r
4041                                 m68ki_jump(new_pc);\r
4042                                 m68ki_set_sr(new_sr);\r
4043                                 CPU_INSTR_MODE = INSTRUCTION_YES;\r
4044                                 CPU_RUN_MODE = RUN_MODE_NORMAL;\r
4045                                 return;\r
4046                 }\r
4047                 /* Not handling long or short bus fault */\r
4048                 CPU_INSTR_MODE = INSTRUCTION_YES;\r
4049                 CPU_RUN_MODE = RUN_MODE_NORMAL;\r
4050                 m68ki_exception_format_error();\r
4051                 return;\r
4052         }\r
4053         m68ki_exception_privilege_violation();\r
4054 }\r
4055 \r
4056 \r
4057 void m68k_op_rtm_32(void)\r
4058 {\r
4059         if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
4060         {\r
4061                 m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
4062                 M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
4063                                          m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
4064                                          m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
4065                 return;\r
4066         }\r
4067         m68ki_exception_illegal();\r
4068 }\r
4069 \r
4070 \r
4071 void m68k_op_rtr_32(void)\r
4072 {\r
4073         m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
4074         m68ki_set_ccr(m68ki_pull_16());\r
4075         m68ki_jump(m68ki_pull_32());\r
4076 }\r
4077 \r
4078 \r
4079 void m68k_op_rts_32(void)\r
4080 {\r
4081         m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
4082         m68ki_jump(m68ki_pull_32());\r
4083 }\r
4084 \r
4085 \r
4086 void m68k_op_sbcd_8_rr(void)\r
4087 {\r
4088         uint* r_dst = &DX;\r
4089         uint src = DY;\r
4090         uint dst = *r_dst;\r
4091         uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();\r
4092 \r
4093 //  FLAG_V = ~res; /* Undefined V behavior */\r
4094         FLAG_V = VFLAG_CLEAR;   /* Undefined in Motorola's M68000PM/AD rev.1 and safer to assume cleared. */\r
4095 \r
4096         if(res > 9)\r
4097                 res -= 6;\r
4098         res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);\r
4099         if(res > 0x99)\r
4100         {\r
4101                 res += 0xa0;\r
4102                 FLAG_X = FLAG_C = CFLAG_SET;\r
4103                 FLAG_N = NFLAG_SET;     /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */\r
4104         }\r
4105         else\r
4106                 FLAG_N = FLAG_X = FLAG_C = 0;\r
4107 \r
4108         res = MASK_OUT_ABOVE_8(res);\r
4109 \r
4110 //  FLAG_V &= res; /* Undefined V behavior part II */\r
4111 //  FLAG_N = NFLAG_8(res); /* Undefined N behavior */\r
4112         FLAG_Z |= res;\r
4113 \r
4114         *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
4115 }\r
4116 \r
4117 \r
4118 void m68k_op_sbcd_8_mm_ax7(void)\r
4119 {\r
4120         uint src = OPER_AY_PD_8();\r
4121         uint ea  = EA_A7_PD_8();\r
4122         uint dst = m68ki_read_8(ea);\r
4123         uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();\r
4124 \r
4125 //  FLAG_V = ~res; /* Undefined V behavior */\r
4126         FLAG_V = VFLAG_CLEAR;   /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */\r
4127 \r
4128         if(res > 9)\r
4129                 res -= 6;\r
4130         res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);\r
4131         if(res > 0x99)\r
4132         {\r
4133                 res += 0xa0;\r
4134                 FLAG_X = FLAG_C = CFLAG_SET;\r
4135                 FLAG_N = NFLAG_SET;     /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */\r
4136         }\r
4137         else\r
4138                 FLAG_N = FLAG_X = FLAG_C = 0;\r
4139 \r
4140         res = MASK_OUT_ABOVE_8(res);\r
4141 \r
4142 //  FLAG_V &= res; /* Undefined V behavior part II */\r
4143 //  FLAG_N = NFLAG_8(res); /* Undefined N behavior */\r
4144         FLAG_Z |= res;\r
4145 \r
4146         m68ki_write_8(ea, res);\r
4147 }\r
4148 \r
4149 \r
4150 void m68k_op_sbcd_8_mm_ay7(void)\r
4151 {\r
4152         uint src = OPER_A7_PD_8();\r
4153         uint ea  = EA_AX_PD_8();\r
4154         uint dst = m68ki_read_8(ea);\r
4155         uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();\r
4156 \r
4157 //  FLAG_V = ~res; /* Undefined V behavior */\r
4158         FLAG_V = VFLAG_CLEAR;   /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */\r
4159 \r
4160         if(res > 9)\r
4161                 res -= 6;\r
4162         res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);\r
4163         if(res > 0x99)\r
4164         {\r
4165                 res += 0xa0;\r
4166                 FLAG_X = FLAG_C = CFLAG_SET;\r
4167                 FLAG_N = NFLAG_SET;     /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */\r
4168         }\r
4169         else\r
4170                 FLAG_N = FLAG_X = FLAG_C = 0;\r
4171 \r
4172         res = MASK_OUT_ABOVE_8(res);\r
4173 \r
4174 //  FLAG_V &= res; /* Undefined V behavior part II */\r
4175 //  FLAG_N = NFLAG_8(res); /* Undefined N behavior */\r
4176         FLAG_Z |= res;\r
4177 \r
4178         m68ki_write_8(ea, res);\r
4179 }\r
4180 \r
4181 \r
4182 void m68k_op_sbcd_8_mm_axy7(void)\r
4183 {\r
4184         uint src = OPER_A7_PD_8();\r
4185         uint ea  = EA_A7_PD_8();\r
4186         uint dst = m68ki_read_8(ea);\r
4187         uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();\r
4188 \r
4189 //  FLAG_V = ~res; /* Undefined V behavior */\r
4190         FLAG_V = VFLAG_CLEAR;   /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */\r
4191 \r
4192         if(res > 9)\r
4193                 res -= 6;\r
4194         res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);\r
4195         if(res > 0x99)\r
4196         {\r
4197                 res += 0xa0;\r
4198                 FLAG_X = FLAG_C = CFLAG_SET;\r
4199                 FLAG_N = NFLAG_SET;     /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */\r
4200         }\r
4201         else\r
4202                 FLAG_N = FLAG_X = FLAG_C = 0;\r
4203 \r
4204         res = MASK_OUT_ABOVE_8(res);\r
4205 \r
4206 //  FLAG_V &= res; /* Undefined V behavior part II */\r
4207 //  FLAG_N = NFLAG_8(res); /* Undefined N behavior */\r
4208         FLAG_Z |= res;\r
4209 \r
4210         m68ki_write_8(ea, res);\r
4211 }\r
4212 \r
4213 \r
4214 void m68k_op_sbcd_8_mm(void)\r
4215 {\r
4216         uint src = OPER_AY_PD_8();\r
4217         uint ea  = EA_AX_PD_8();\r
4218         uint dst = m68ki_read_8(ea);\r
4219         uint res = LOW_NIBBLE(dst) - LOW_NIBBLE(src) - XFLAG_AS_1();\r
4220 \r
4221 //  FLAG_V = ~res; /* Undefined V behavior */\r
4222         FLAG_V = VFLAG_CLEAR;   /* Undefined in Motorola's M68000PM/AD rev.1 and safer to return zero. */\r
4223 \r
4224         if(res > 9)\r
4225                 res -= 6;\r
4226         res += HIGH_NIBBLE(dst) - HIGH_NIBBLE(src);\r
4227         if(res > 0x99)\r
4228         {\r
4229                 res += 0xa0;\r
4230                 FLAG_X = FLAG_C = CFLAG_SET;\r
4231                 FLAG_N = NFLAG_SET;     /* Undefined in Motorola's M68000PM/AD rev.1 and safer to follow carry. */\r
4232         }\r
4233         else\r
4234                 FLAG_N = FLAG_X = FLAG_C = 0;\r
4235 \r
4236         res = MASK_OUT_ABOVE_8(res);\r
4237 \r
4238 //  FLAG_V &= res; /* Undefined V behavior part II */\r
4239 //  FLAG_N = NFLAG_8(res); /* Undefined N behavior */\r
4240         FLAG_Z |= res;\r
4241 \r
4242         m68ki_write_8(ea, res);\r
4243 }\r
4244 \r
4245 \r
4246 void m68k_op_st_8_d(void)\r
4247 {\r
4248         DY |= 0xff;\r
4249 }\r
4250 \r
4251 \r
4252 void m68k_op_st_8_ai(void)\r
4253 {\r
4254         m68ki_write_8(EA_AY_AI_8(), 0xff);\r
4255 }\r
4256 \r
4257 \r
4258 void m68k_op_st_8_pi(void)\r
4259 {\r
4260         m68ki_write_8(EA_AY_PI_8(), 0xff);\r
4261 }\r
4262 \r
4263 \r
4264 void m68k_op_st_8_pi7(void)\r
4265 {\r
4266         m68ki_write_8(EA_A7_PI_8(), 0xff);\r
4267 }\r
4268 \r
4269 \r
4270 void m68k_op_st_8_pd(void)\r
4271 {\r
4272         m68ki_write_8(EA_AY_PD_8(), 0xff);\r
4273 }\r
4274 \r
4275 \r
4276 void m68k_op_st_8_pd7(void)\r
4277 {\r
4278         m68ki_write_8(EA_A7_PD_8(), 0xff);\r
4279 }\r
4280 \r
4281 \r
4282 void m68k_op_st_8_di(void)\r
4283 {\r
4284         m68ki_write_8(EA_AY_DI_8(), 0xff);\r
4285 }\r
4286 \r
4287 \r
4288 void m68k_op_st_8_ix(void)\r
4289 {\r
4290         m68ki_write_8(EA_AY_IX_8(), 0xff);\r
4291 }\r
4292 \r
4293 \r
4294 void m68k_op_st_8_aw(void)\r
4295 {\r
4296         m68ki_write_8(EA_AW_8(), 0xff);\r
4297 }\r
4298 \r
4299 \r
4300 void m68k_op_st_8_al(void)\r
4301 {\r
4302         m68ki_write_8(EA_AL_8(), 0xff);\r
4303 }\r
4304 \r
4305 \r
4306 void m68k_op_sf_8_d(void)\r
4307 {\r
4308         DY &= 0xffffff00;\r
4309 }\r
4310 \r
4311 \r
4312 void m68k_op_sf_8_ai(void)\r
4313 {\r
4314         m68ki_write_8(EA_AY_AI_8(), 0);\r
4315 }\r
4316 \r
4317 \r
4318 void m68k_op_sf_8_pi(void)\r
4319 {\r
4320         m68ki_write_8(EA_AY_PI_8(), 0);\r
4321 }\r
4322 \r
4323 \r
4324 void m68k_op_sf_8_pi7(void)\r
4325 {\r
4326         m68ki_write_8(EA_A7_PI_8(), 0);\r
4327 }\r
4328 \r
4329 \r
4330 void m68k_op_sf_8_pd(void)\r
4331 {\r
4332         m68ki_write_8(EA_AY_PD_8(), 0);\r
4333 }\r
4334 \r
4335 \r
4336 void m68k_op_sf_8_pd7(void)\r
4337 {\r
4338         m68ki_write_8(EA_A7_PD_8(), 0);\r
4339 }\r
4340 \r
4341 \r
4342 void m68k_op_sf_8_di(void)\r
4343 {\r
4344         m68ki_write_8(EA_AY_DI_8(), 0);\r
4345 }\r
4346 \r
4347 \r
4348 void m68k_op_sf_8_ix(void)\r
4349 {\r
4350         m68ki_write_8(EA_AY_IX_8(), 0);\r
4351 }\r
4352 \r
4353 \r
4354 void m68k_op_sf_8_aw(void)\r
4355 {\r
4356         m68ki_write_8(EA_AW_8(), 0);\r
4357 }\r
4358 \r
4359 \r
4360 void m68k_op_sf_8_al(void)\r
4361 {\r
4362         m68ki_write_8(EA_AL_8(), 0);\r
4363 }\r
4364 \r
4365 \r
4366 void m68k_op_shi_8_d(void)\r
4367 {\r
4368         if(COND_HI())\r
4369         {\r
4370                 DY |= 0xff;\r
4371                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4372                 return;\r
4373         }\r
4374         DY &= 0xffffff00;\r
4375 }\r
4376 \r
4377 \r
4378 void m68k_op_sls_8_d(void)\r
4379 {\r
4380         if(COND_LS())\r
4381         {\r
4382                 DY |= 0xff;\r
4383                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4384                 return;\r
4385         }\r
4386         DY &= 0xffffff00;\r
4387 }\r
4388 \r
4389 \r
4390 void m68k_op_scc_8_d(void)\r
4391 {\r
4392         if(COND_CC())\r
4393         {\r
4394                 DY |= 0xff;\r
4395                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4396                 return;\r
4397         }\r
4398         DY &= 0xffffff00;\r
4399 }\r
4400 \r
4401 \r
4402 void m68k_op_scs_8_d(void)\r
4403 {\r
4404         if(COND_CS())\r
4405         {\r
4406                 DY |= 0xff;\r
4407                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4408                 return;\r
4409         }\r
4410         DY &= 0xffffff00;\r
4411 }\r
4412 \r
4413 \r
4414 void m68k_op_sne_8_d(void)\r
4415 {\r
4416         if(COND_NE())\r
4417         {\r
4418                 DY |= 0xff;\r
4419                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4420                 return;\r
4421         }\r
4422         DY &= 0xffffff00;\r
4423 }\r
4424 \r
4425 \r
4426 void m68k_op_seq_8_d(void)\r
4427 {\r
4428         if(COND_EQ())\r
4429         {\r
4430                 DY |= 0xff;\r
4431                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4432                 return;\r
4433         }\r
4434         DY &= 0xffffff00;\r
4435 }\r
4436 \r
4437 \r
4438 void m68k_op_svc_8_d(void)\r
4439 {\r
4440         if(COND_VC())\r
4441         {\r
4442                 DY |= 0xff;\r
4443                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4444                 return;\r
4445         }\r
4446         DY &= 0xffffff00;\r
4447 }\r
4448 \r
4449 \r
4450 void m68k_op_svs_8_d(void)\r
4451 {\r
4452         if(COND_VS())\r
4453         {\r
4454                 DY |= 0xff;\r
4455                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4456                 return;\r
4457         }\r
4458         DY &= 0xffffff00;\r
4459 }\r
4460 \r
4461 \r
4462 void m68k_op_spl_8_d(void)\r
4463 {\r
4464         if(COND_PL())\r
4465         {\r
4466                 DY |= 0xff;\r
4467                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4468                 return;\r
4469         }\r
4470         DY &= 0xffffff00;\r
4471 }\r
4472 \r
4473 \r
4474 void m68k_op_smi_8_d(void)\r
4475 {\r
4476         if(COND_MI())\r
4477         {\r
4478                 DY |= 0xff;\r
4479                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4480                 return;\r
4481         }\r
4482         DY &= 0xffffff00;\r
4483 }\r
4484 \r
4485 \r
4486 void m68k_op_sge_8_d(void)\r
4487 {\r
4488         if(COND_GE())\r
4489         {\r
4490                 DY |= 0xff;\r
4491                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4492                 return;\r
4493         }\r
4494         DY &= 0xffffff00;\r
4495 }\r
4496 \r
4497 \r
4498 void m68k_op_slt_8_d(void)\r
4499 {\r
4500         if(COND_LT())\r
4501         {\r
4502                 DY |= 0xff;\r
4503                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4504                 return;\r
4505         }\r
4506         DY &= 0xffffff00;\r
4507 }\r
4508 \r
4509 \r
4510 void m68k_op_sgt_8_d(void)\r
4511 {\r
4512         if(COND_GT())\r
4513         {\r
4514                 DY |= 0xff;\r
4515                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4516                 return;\r
4517         }\r
4518         DY &= 0xffffff00;\r
4519 }\r
4520 \r
4521 \r
4522 void m68k_op_sle_8_d(void)\r
4523 {\r
4524         if(COND_LE())\r
4525         {\r
4526                 DY |= 0xff;\r
4527                 USE_CYCLES(CYC_SCC_R_TRUE);\r
4528                 return;\r
4529         }\r
4530         DY &= 0xffffff00;\r
4531 }\r
4532 \r
4533 \r
4534 void m68k_op_shi_8_ai(void)\r
4535 {\r
4536         m68ki_write_8(EA_AY_AI_8(), COND_HI() ? 0xff : 0);\r
4537 }\r
4538 \r
4539 \r
4540 void m68k_op_shi_8_pi(void)\r
4541 {\r
4542         m68ki_write_8(EA_AY_PI_8(), COND_HI() ? 0xff : 0);\r
4543 }\r
4544 \r
4545 \r
4546 void m68k_op_shi_8_pi7(void)\r
4547 {\r
4548         m68ki_write_8(EA_A7_PI_8(), COND_HI() ? 0xff : 0);\r
4549 }\r
4550 \r
4551 \r
4552 void m68k_op_shi_8_pd(void)\r
4553 {\r
4554         m68ki_write_8(EA_AY_PD_8(), COND_HI() ? 0xff : 0);\r
4555 }\r
4556 \r
4557 \r
4558 void m68k_op_shi_8_pd7(void)\r
4559 {\r
4560         m68ki_write_8(EA_A7_PD_8(), COND_HI() ? 0xff : 0);\r
4561 }\r
4562 \r
4563 \r
4564 void m68k_op_shi_8_di(void)\r
4565 {\r
4566         m68ki_write_8(EA_AY_DI_8(), COND_HI() ? 0xff : 0);\r
4567 }\r
4568 \r
4569 \r
4570 void m68k_op_shi_8_ix(void)\r
4571 {\r
4572         m68ki_write_8(EA_AY_IX_8(), COND_HI() ? 0xff : 0);\r
4573 }\r
4574 \r
4575 \r
4576 void m68k_op_shi_8_aw(void)\r
4577 {\r
4578         m68ki_write_8(EA_AW_8(), COND_HI() ? 0xff : 0);\r
4579 }\r
4580 \r
4581 \r
4582 void m68k_op_shi_8_al(void)\r
4583 {\r
4584         m68ki_write_8(EA_AL_8(), COND_HI() ? 0xff : 0);\r
4585 }\r
4586 \r
4587 \r
4588 void m68k_op_sls_8_ai(void)\r
4589 {\r
4590         m68ki_write_8(EA_AY_AI_8(), COND_LS() ? 0xff : 0);\r
4591 }\r
4592 \r
4593 \r
4594 void m68k_op_sls_8_pi(void)\r
4595 {\r
4596         m68ki_write_8(EA_AY_PI_8(), COND_LS() ? 0xff : 0);\r
4597 }\r
4598 \r
4599 \r
4600 void m68k_op_sls_8_pi7(void)\r
4601 {\r
4602         m68ki_write_8(EA_A7_PI_8(), COND_LS() ? 0xff : 0);\r
4603 }\r
4604 \r
4605 \r
4606 void m68k_op_sls_8_pd(void)\r
4607 {\r
4608         m68ki_write_8(EA_AY_PD_8(), COND_LS() ? 0xff : 0);\r
4609 }\r
4610 \r
4611 \r
4612 void m68k_op_sls_8_pd7(void)\r
4613 {\r
4614         m68ki_write_8(EA_A7_PD_8(), COND_LS() ? 0xff : 0);\r
4615 }\r
4616 \r
4617 \r
4618 void m68k_op_sls_8_di(void)\r
4619 {\r
4620         m68ki_write_8(EA_AY_DI_8(), COND_LS() ? 0xff : 0);\r
4621 }\r
4622 \r
4623 \r
4624 void m68k_op_sls_8_ix(void)\r
4625 {\r
4626         m68ki_write_8(EA_AY_IX_8(), COND_LS() ? 0xff : 0);\r
4627 }\r
4628 \r
4629 \r
4630 void m68k_op_sls_8_aw(void)\r
4631 {\r
4632         m68ki_write_8(EA_AW_8(), COND_LS() ? 0xff : 0);\r
4633 }\r
4634 \r
4635 \r
4636 void m68k_op_sls_8_al(void)\r
4637 {\r
4638         m68ki_write_8(EA_AL_8(), COND_LS() ? 0xff : 0);\r
4639 }\r
4640 \r
4641 \r
4642 void m68k_op_scc_8_ai(void)\r
4643 {\r
4644         m68ki_write_8(EA_AY_AI_8(), COND_CC() ? 0xff : 0);\r
4645 }\r
4646 \r
4647 \r
4648 void m68k_op_scc_8_pi(void)\r
4649 {\r
4650         m68ki_write_8(EA_AY_PI_8(), COND_CC() ? 0xff : 0);\r
4651 }\r
4652 \r
4653 \r
4654 void m68k_op_scc_8_pi7(void)\r
4655 {\r
4656         m68ki_write_8(EA_A7_PI_8(), COND_CC() ? 0xff : 0);\r
4657 }\r
4658 \r
4659 \r
4660 void m68k_op_scc_8_pd(void)\r
4661 {\r
4662         m68ki_write_8(EA_AY_PD_8(), COND_CC() ? 0xff : 0);\r
4663 }\r
4664 \r
4665 \r
4666 void m68k_op_scc_8_pd7(void)\r
4667 {\r
4668         m68ki_write_8(EA_A7_PD_8(), COND_CC() ? 0xff : 0);\r
4669 }\r
4670 \r
4671 \r
4672 void m68k_op_scc_8_di(void)\r
4673 {\r
4674         m68ki_write_8(EA_AY_DI_8(), COND_CC() ? 0xff : 0);\r
4675 }\r
4676 \r
4677 \r
4678 void m68k_op_scc_8_ix(void)\r
4679 {\r
4680         m68ki_write_8(EA_AY_IX_8(), COND_CC() ? 0xff : 0);\r
4681 }\r
4682 \r
4683 \r
4684 void m68k_op_scc_8_aw(void)\r
4685 {\r
4686         m68ki_write_8(EA_AW_8(), COND_CC() ? 0xff : 0);\r
4687 }\r
4688 \r
4689 \r
4690 void m68k_op_scc_8_al(void)\r
4691 {\r
4692         m68ki_write_8(EA_AL_8(), COND_CC() ? 0xff : 0);\r
4693 }\r
4694 \r
4695 \r
4696 void m68k_op_scs_8_ai(void)\r
4697 {\r
4698         m68ki_write_8(EA_AY_AI_8(), COND_CS() ? 0xff : 0);\r
4699 }\r
4700 \r
4701 \r
4702 void m68k_op_scs_8_pi(void)\r
4703 {\r
4704         m68ki_write_8(EA_AY_PI_8(), COND_CS() ? 0xff : 0);\r
4705 }\r
4706 \r
4707 \r
4708 void m68k_op_scs_8_pi7(void)\r
4709 {\r
4710         m68ki_write_8(EA_A7_PI_8(), COND_CS() ? 0xff : 0);\r
4711 }\r
4712 \r
4713 \r
4714 void m68k_op_scs_8_pd(void)\r
4715 {\r
4716         m68ki_write_8(EA_AY_PD_8(), COND_CS() ? 0xff : 0);\r
4717 }\r
4718 \r
4719 \r
4720 void m68k_op_scs_8_pd7(void)\r
4721 {\r
4722         m68ki_write_8(EA_A7_PD_8(), COND_CS() ? 0xff : 0);\r
4723 }\r
4724 \r
4725 \r
4726 void m68k_op_scs_8_di(void)\r
4727 {\r
4728         m68ki_write_8(EA_AY_DI_8(), COND_CS() ? 0xff : 0);\r
4729 }\r
4730 \r
4731 \r
4732 void m68k_op_scs_8_ix(void)\r
4733 {\r
4734         m68ki_write_8(EA_AY_IX_8(), COND_CS() ? 0xff : 0);\r
4735 }\r
4736 \r
4737 \r
4738 void m68k_op_scs_8_aw(void)\r
4739 {\r
4740         m68ki_write_8(EA_AW_8(), COND_CS() ? 0xff : 0);\r
4741 }\r
4742 \r
4743 \r
4744 void m68k_op_scs_8_al(void)\r
4745 {\r
4746         m68ki_write_8(EA_AL_8(), COND_CS() ? 0xff : 0);\r
4747 }\r
4748 \r
4749 \r
4750 void m68k_op_sne_8_ai(void)\r
4751 {\r
4752         m68ki_write_8(EA_AY_AI_8(), COND_NE() ? 0xff : 0);\r
4753 }\r
4754 \r
4755 \r
4756 void m68k_op_sne_8_pi(void)\r
4757 {\r
4758         m68ki_write_8(EA_AY_PI_8(), COND_NE() ? 0xff : 0);\r
4759 }\r
4760 \r
4761 \r
4762 void m68k_op_sne_8_pi7(void)\r
4763 {\r
4764         m68ki_write_8(EA_A7_PI_8(), COND_NE() ? 0xff : 0);\r
4765 }\r
4766 \r
4767 \r
4768 void m68k_op_sne_8_pd(void)\r
4769 {\r
4770         m68ki_write_8(EA_AY_PD_8(), COND_NE() ? 0xff : 0);\r
4771 }\r
4772 \r
4773 \r
4774 void m68k_op_sne_8_pd7(void)\r
4775 {\r
4776         m68ki_write_8(EA_A7_PD_8(), COND_NE() ? 0xff : 0);\r
4777 }\r
4778 \r
4779 \r
4780 void m68k_op_sne_8_di(void)\r
4781 {\r
4782         m68ki_write_8(EA_AY_DI_8(), COND_NE() ? 0xff : 0);\r
4783 }\r
4784 \r
4785 \r
4786 void m68k_op_sne_8_ix(void)\r
4787 {\r
4788         m68ki_write_8(EA_AY_IX_8(), COND_NE() ? 0xff : 0);\r
4789 }\r
4790 \r
4791 \r
4792 void m68k_op_sne_8_aw(void)\r
4793 {\r
4794         m68ki_write_8(EA_AW_8(), COND_NE() ? 0xff : 0);\r
4795 }\r
4796 \r
4797 \r
4798 void m68k_op_sne_8_al(void)\r
4799 {\r
4800         m68ki_write_8(EA_AL_8(), COND_NE() ? 0xff : 0);\r
4801 }\r
4802 \r
4803 \r
4804 void m68k_op_seq_8_ai(void)\r
4805 {\r
4806         m68ki_write_8(EA_AY_AI_8(), COND_EQ() ? 0xff : 0);\r
4807 }\r
4808 \r
4809 \r
4810 void m68k_op_seq_8_pi(void)\r
4811 {\r
4812         m68ki_write_8(EA_AY_PI_8(), COND_EQ() ? 0xff : 0);\r
4813 }\r
4814 \r
4815 \r
4816 void m68k_op_seq_8_pi7(void)\r
4817 {\r
4818         m68ki_write_8(EA_A7_PI_8(), COND_EQ() ? 0xff : 0);\r
4819 }\r
4820 \r
4821 \r
4822 void m68k_op_seq_8_pd(void)\r
4823 {\r
4824         m68ki_write_8(EA_AY_PD_8(), COND_EQ() ? 0xff : 0);\r
4825 }\r
4826 \r
4827 \r
4828 void m68k_op_seq_8_pd7(void)\r
4829 {\r
4830         m68ki_write_8(EA_A7_PD_8(), COND_EQ() ? 0xff : 0);\r
4831 }\r
4832 \r
4833 \r
4834 void m68k_op_seq_8_di(void)\r
4835 {\r
4836         m68ki_write_8(EA_AY_DI_8(), COND_EQ() ? 0xff : 0);\r
4837 }\r
4838 \r
4839 \r
4840 void m68k_op_seq_8_ix(void)\r
4841 {\r
4842         m68ki_write_8(EA_AY_IX_8(), COND_EQ() ? 0xff : 0);\r
4843 }\r
4844 \r
4845 \r
4846 void m68k_op_seq_8_aw(void)\r
4847 {\r
4848         m68ki_write_8(EA_AW_8(), COND_EQ() ? 0xff : 0);\r
4849 }\r
4850 \r
4851 \r
4852 void m68k_op_seq_8_al(void)\r
4853 {\r
4854         m68ki_write_8(EA_AL_8(), COND_EQ() ? 0xff : 0);\r
4855 }\r
4856 \r
4857 \r
4858 void m68k_op_svc_8_ai(void)\r
4859 {\r
4860         m68ki_write_8(EA_AY_AI_8(), COND_VC() ? 0xff : 0);\r
4861 }\r
4862 \r
4863 \r
4864 void m68k_op_svc_8_pi(void)\r
4865 {\r
4866         m68ki_write_8(EA_AY_PI_8(), COND_VC() ? 0xff : 0);\r
4867 }\r
4868 \r
4869 \r
4870 void m68k_op_svc_8_pi7(void)\r
4871 {\r
4872         m68ki_write_8(EA_A7_PI_8(), COND_VC() ? 0xff : 0);\r
4873 }\r
4874 \r
4875 \r
4876 void m68k_op_svc_8_pd(void)\r
4877 {\r
4878         m68ki_write_8(EA_AY_PD_8(), COND_VC() ? 0xff : 0);\r
4879 }\r
4880 \r
4881 \r
4882 void m68k_op_svc_8_pd7(void)\r
4883 {\r
4884         m68ki_write_8(EA_A7_PD_8(), COND_VC() ? 0xff : 0);\r
4885 }\r
4886 \r
4887 \r
4888 void m68k_op_svc_8_di(void)\r
4889 {\r
4890         m68ki_write_8(EA_AY_DI_8(), COND_VC() ? 0xff : 0);\r
4891 }\r
4892 \r
4893 \r
4894 void m68k_op_svc_8_ix(void)\r
4895 {\r
4896         m68ki_write_8(EA_AY_IX_8(), COND_VC() ? 0xff : 0);\r
4897 }\r
4898 \r
4899 \r
4900 void m68k_op_svc_8_aw(void)\r
4901 {\r
4902         m68ki_write_8(EA_AW_8(), COND_VC() ? 0xff : 0);\r
4903 }\r
4904 \r
4905 \r
4906 void m68k_op_svc_8_al(void)\r
4907 {\r
4908         m68ki_write_8(EA_AL_8(), COND_VC() ? 0xff : 0);\r
4909 }\r
4910 \r
4911 \r
4912 void m68k_op_svs_8_ai(void)\r
4913 {\r
4914         m68ki_write_8(EA_AY_AI_8(), COND_VS() ? 0xff : 0);\r
4915 }\r
4916 \r
4917 \r
4918 void m68k_op_svs_8_pi(void)\r
4919 {\r
4920         m68ki_write_8(EA_AY_PI_8(), COND_VS() ? 0xff : 0);\r
4921 }\r
4922 \r
4923 \r
4924 void m68k_op_svs_8_pi7(void)\r
4925 {\r
4926         m68ki_write_8(EA_A7_PI_8(), COND_VS() ? 0xff : 0);\r
4927 }\r
4928 \r
4929 \r
4930 void m68k_op_svs_8_pd(void)\r
4931 {\r
4932         m68ki_write_8(EA_AY_PD_8(), COND_VS() ? 0xff : 0);\r
4933 }\r
4934 \r
4935 \r
4936 void m68k_op_svs_8_pd7(void)\r
4937 {\r
4938         m68ki_write_8(EA_A7_PD_8(), COND_VS() ? 0xff : 0);\r
4939 }\r
4940 \r
4941 \r
4942 void m68k_op_svs_8_di(void)\r
4943 {\r
4944         m68ki_write_8(EA_AY_DI_8(), COND_VS() ? 0xff : 0);\r
4945 }\r
4946 \r
4947 \r
4948 void m68k_op_svs_8_ix(void)\r
4949 {\r
4950         m68ki_write_8(EA_AY_IX_8(), COND_VS() ? 0xff : 0);\r
4951 }\r
4952 \r
4953 \r
4954 void m68k_op_svs_8_aw(void)\r
4955 {\r
4956         m68ki_write_8(EA_AW_8(), COND_VS() ? 0xff : 0);\r
4957 }\r
4958 \r
4959 \r
4960 void m68k_op_svs_8_al(void)\r
4961 {\r
4962         m68ki_write_8(EA_AL_8(), COND_VS() ? 0xff : 0);\r
4963 }\r
4964 \r
4965 \r
4966 void m68k_op_spl_8_ai(void)\r
4967 {\r
4968         m68ki_write_8(EA_AY_AI_8(), COND_PL() ? 0xff : 0);\r
4969 }\r
4970 \r
4971 \r
4972 void m68k_op_spl_8_pi(void)\r
4973 {\r
4974         m68ki_write_8(EA_AY_PI_8(), COND_PL() ? 0xff : 0);\r
4975 }\r
4976 \r
4977 \r
4978 void m68k_op_spl_8_pi7(void)\r
4979 {\r
4980         m68ki_write_8(EA_A7_PI_8(), COND_PL() ? 0xff : 0);\r
4981 }\r
4982 \r
4983 \r
4984 void m68k_op_spl_8_pd(void)\r
4985 {\r
4986         m68ki_write_8(EA_AY_PD_8(), COND_PL() ? 0xff : 0);\r
4987 }\r
4988 \r
4989 \r
4990 void m68k_op_spl_8_pd7(void)\r
4991 {\r
4992         m68ki_write_8(EA_A7_PD_8(), COND_PL() ? 0xff : 0);\r
4993 }\r
4994 \r
4995 \r
4996 void m68k_op_spl_8_di(void)\r
4997 {\r
4998         m68ki_write_8(EA_AY_DI_8(), COND_PL() ? 0xff : 0);\r
4999 }\r
5000 \r
5001 \r
5002 void m68k_op_spl_8_ix(void)\r
5003 {\r
5004         m68ki_write_8(EA_AY_IX_8(), COND_PL() ? 0xff : 0);\r
5005 }\r
5006 \r
5007 \r
5008 void m68k_op_spl_8_aw(void)\r
5009 {\r
5010         m68ki_write_8(EA_AW_8(), COND_PL() ? 0xff : 0);\r
5011 }\r
5012 \r
5013 \r
5014 void m68k_op_spl_8_al(void)\r
5015 {\r
5016         m68ki_write_8(EA_AL_8(), COND_PL() ? 0xff : 0);\r
5017 }\r
5018 \r
5019 \r
5020 void m68k_op_smi_8_ai(void)\r
5021 {\r
5022         m68ki_write_8(EA_AY_AI_8(), COND_MI() ? 0xff : 0);\r
5023 }\r
5024 \r
5025 \r
5026 void m68k_op_smi_8_pi(void)\r
5027 {\r
5028         m68ki_write_8(EA_AY_PI_8(), COND_MI() ? 0xff : 0);\r
5029 }\r
5030 \r
5031 \r
5032 void m68k_op_smi_8_pi7(void)\r
5033 {\r
5034         m68ki_write_8(EA_A7_PI_8(), COND_MI() ? 0xff : 0);\r
5035 }\r
5036 \r
5037 \r
5038 void m68k_op_smi_8_pd(void)\r
5039 {\r
5040         m68ki_write_8(EA_AY_PD_8(), COND_MI() ? 0xff : 0);\r
5041 }\r
5042 \r
5043 \r
5044 void m68k_op_smi_8_pd7(void)\r
5045 {\r
5046         m68ki_write_8(EA_A7_PD_8(), COND_MI() ? 0xff : 0);\r
5047 }\r
5048 \r
5049 \r
5050 void m68k_op_smi_8_di(void)\r
5051 {\r
5052         m68ki_write_8(EA_AY_DI_8(), COND_MI() ? 0xff : 0);\r
5053 }\r
5054 \r
5055 \r
5056 void m68k_op_smi_8_ix(void)\r
5057 {\r
5058         m68ki_write_8(EA_AY_IX_8(), COND_MI() ? 0xff : 0);\r
5059 }\r
5060 \r
5061 \r
5062 void m68k_op_smi_8_aw(void)\r
5063 {\r
5064         m68ki_write_8(EA_AW_8(), COND_MI() ? 0xff : 0);\r
5065 }\r
5066 \r
5067 \r
5068 void m68k_op_smi_8_al(void)\r
5069 {\r
5070         m68ki_write_8(EA_AL_8(), COND_MI() ? 0xff : 0);\r
5071 }\r
5072 \r
5073 \r
5074 void m68k_op_sge_8_ai(void)\r
5075 {\r
5076         m68ki_write_8(EA_AY_AI_8(), COND_GE() ? 0xff : 0);\r
5077 }\r
5078 \r
5079 \r
5080 void m68k_op_sge_8_pi(void)\r
5081 {\r
5082         m68ki_write_8(EA_AY_PI_8(), COND_GE() ? 0xff : 0);\r
5083 }\r
5084 \r
5085 \r
5086 void m68k_op_sge_8_pi7(void)\r
5087 {\r
5088         m68ki_write_8(EA_A7_PI_8(), COND_GE() ? 0xff : 0);\r
5089 }\r
5090 \r
5091 \r
5092 void m68k_op_sge_8_pd(void)\r
5093 {\r
5094         m68ki_write_8(EA_AY_PD_8(), COND_GE() ? 0xff : 0);\r
5095 }\r
5096 \r
5097 \r
5098 void m68k_op_sge_8_pd7(void)\r
5099 {\r
5100         m68ki_write_8(EA_A7_PD_8(), COND_GE() ? 0xff : 0);\r
5101 }\r
5102 \r
5103 \r
5104 void m68k_op_sge_8_di(void)\r
5105 {\r
5106         m68ki_write_8(EA_AY_DI_8(), COND_GE() ? 0xff : 0);\r
5107 }\r
5108 \r
5109 \r
5110 void m68k_op_sge_8_ix(void)\r
5111 {\r
5112         m68ki_write_8(EA_AY_IX_8(), COND_GE() ? 0xff : 0);\r
5113 }\r
5114 \r
5115 \r
5116 void m68k_op_sge_8_aw(void)\r
5117 {\r
5118         m68ki_write_8(EA_AW_8(), COND_GE() ? 0xff : 0);\r
5119 }\r
5120 \r
5121 \r
5122 void m68k_op_sge_8_al(void)\r
5123 {\r
5124         m68ki_write_8(EA_AL_8(), COND_GE() ? 0xff : 0);\r
5125 }\r
5126 \r
5127 \r
5128 void m68k_op_slt_8_ai(void)\r
5129 {\r
5130         m68ki_write_8(EA_AY_AI_8(), COND_LT() ? 0xff : 0);\r
5131 }\r
5132 \r
5133 \r
5134 void m68k_op_slt_8_pi(void)\r
5135 {\r
5136         m68ki_write_8(EA_AY_PI_8(), COND_LT() ? 0xff : 0);\r
5137 }\r
5138 \r
5139 \r
5140 void m68k_op_slt_8_pi7(void)\r
5141 {\r
5142         m68ki_write_8(EA_A7_PI_8(), COND_LT() ? 0xff : 0);\r
5143 }\r
5144 \r
5145 \r
5146 void m68k_op_slt_8_pd(void)\r
5147 {\r
5148         m68ki_write_8(EA_AY_PD_8(), COND_LT() ? 0xff : 0);\r
5149 }\r
5150 \r
5151 \r
5152 void m68k_op_slt_8_pd7(void)\r
5153 {\r
5154         m68ki_write_8(EA_A7_PD_8(), COND_LT() ? 0xff : 0);\r
5155 }\r
5156 \r
5157 \r
5158 void m68k_op_slt_8_di(void)\r
5159 {\r
5160         m68ki_write_8(EA_AY_DI_8(), COND_LT() ? 0xff : 0);\r
5161 }\r
5162 \r
5163 \r
5164 void m68k_op_slt_8_ix(void)\r
5165 {\r
5166         m68ki_write_8(EA_AY_IX_8(), COND_LT() ? 0xff : 0);\r
5167 }\r
5168 \r
5169 \r
5170 void m68k_op_slt_8_aw(void)\r
5171 {\r
5172         m68ki_write_8(EA_AW_8(), COND_LT() ? 0xff : 0);\r
5173 }\r
5174 \r
5175 \r
5176 void m68k_op_slt_8_al(void)\r
5177 {\r
5178         m68ki_write_8(EA_AL_8(), COND_LT() ? 0xff : 0);\r
5179 }\r
5180 \r
5181 \r
5182 void m68k_op_sgt_8_ai(void)\r
5183 {\r
5184         m68ki_write_8(EA_AY_AI_8(), COND_GT() ? 0xff : 0);\r
5185 }\r
5186 \r
5187 \r
5188 void m68k_op_sgt_8_pi(void)\r
5189 {\r
5190         m68ki_write_8(EA_AY_PI_8(), COND_GT() ? 0xff : 0);\r
5191 }\r
5192 \r
5193 \r
5194 void m68k_op_sgt_8_pi7(void)\r
5195 {\r
5196         m68ki_write_8(EA_A7_PI_8(), COND_GT() ? 0xff : 0);\r
5197 }\r
5198 \r
5199 \r
5200 void m68k_op_sgt_8_pd(void)\r
5201 {\r
5202         m68ki_write_8(EA_AY_PD_8(), COND_GT() ? 0xff : 0);\r
5203 }\r
5204 \r
5205 \r
5206 void m68k_op_sgt_8_pd7(void)\r
5207 {\r
5208         m68ki_write_8(EA_A7_PD_8(), COND_GT() ? 0xff : 0);\r
5209 }\r
5210 \r
5211 \r
5212 void m68k_op_sgt_8_di(void)\r
5213 {\r
5214         m68ki_write_8(EA_AY_DI_8(), COND_GT() ? 0xff : 0);\r
5215 }\r
5216 \r
5217 \r
5218 void m68k_op_sgt_8_ix(void)\r
5219 {\r
5220         m68ki_write_8(EA_AY_IX_8(), COND_GT() ? 0xff : 0);\r
5221 }\r
5222 \r
5223 \r
5224 void m68k_op_sgt_8_aw(void)\r
5225 {\r
5226         m68ki_write_8(EA_AW_8(), COND_GT() ? 0xff : 0);\r
5227 }\r
5228 \r
5229 \r
5230 void m68k_op_sgt_8_al(void)\r
5231 {\r
5232         m68ki_write_8(EA_AL_8(), COND_GT() ? 0xff : 0);\r
5233 }\r
5234 \r
5235 \r
5236 void m68k_op_sle_8_ai(void)\r
5237 {\r
5238         m68ki_write_8(EA_AY_AI_8(), COND_LE() ? 0xff : 0);\r
5239 }\r
5240 \r
5241 \r
5242 void m68k_op_sle_8_pi(void)\r
5243 {\r
5244         m68ki_write_8(EA_AY_PI_8(), COND_LE() ? 0xff : 0);\r
5245 }\r
5246 \r
5247 \r
5248 void m68k_op_sle_8_pi7(void)\r
5249 {\r
5250         m68ki_write_8(EA_A7_PI_8(), COND_LE() ? 0xff : 0);\r
5251 }\r
5252 \r
5253 \r
5254 void m68k_op_sle_8_pd(void)\r
5255 {\r
5256         m68ki_write_8(EA_AY_PD_8(), COND_LE() ? 0xff : 0);\r
5257 }\r
5258 \r
5259 \r
5260 void m68k_op_sle_8_pd7(void)\r
5261 {\r
5262         m68ki_write_8(EA_A7_PD_8(), COND_LE() ? 0xff : 0);\r
5263 }\r
5264 \r
5265 \r
5266 void m68k_op_sle_8_di(void)\r
5267 {\r
5268         m68ki_write_8(EA_AY_DI_8(), COND_LE() ? 0xff : 0);\r
5269 }\r
5270 \r
5271 \r
5272 void m68k_op_sle_8_ix(void)\r
5273 {\r
5274         m68ki_write_8(EA_AY_IX_8(), COND_LE() ? 0xff : 0);\r
5275 }\r
5276 \r
5277 \r
5278 void m68k_op_sle_8_aw(void)\r
5279 {\r
5280         m68ki_write_8(EA_AW_8(), COND_LE() ? 0xff : 0);\r
5281 }\r
5282 \r
5283 \r
5284 void m68k_op_sle_8_al(void)\r
5285 {\r
5286         m68ki_write_8(EA_AL_8(), COND_LE() ? 0xff : 0);\r
5287 }\r
5288 \r
5289 \r
5290 void m68k_op_stop(void)\r
5291 {\r
5292         if(FLAG_S)\r
5293         {\r
5294                 uint new_sr = OPER_I_16();\r
5295                 m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
5296                 CPU_STOPPED |= STOP_LEVEL_STOP;\r
5297                 m68ki_set_sr(new_sr);\r
5298                 m68ki_remaining_cycles = 0;\r
5299                 return;\r
5300         }\r
5301         m68ki_exception_privilege_violation();\r
5302 }\r
5303 \r
5304 \r
5305 void m68k_op_sub_8_er_d(void)\r
5306 {\r
5307         uint* r_dst = &DX;\r
5308         uint src = MASK_OUT_ABOVE_8(DY);\r
5309         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5310         uint res = dst - src;\r
5311 \r
5312         FLAG_N = NFLAG_8(res);\r
5313         FLAG_X = FLAG_C = CFLAG_8(res);\r
5314         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5315         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5316 \r
5317         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5318 }\r
5319 \r
5320 \r
5321 void m68k_op_sub_8_er_ai(void)\r
5322 {\r
5323         uint* r_dst = &DX;\r
5324         uint src = OPER_AY_AI_8();\r
5325         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5326         uint res = dst - src;\r
5327 \r
5328         FLAG_N = NFLAG_8(res);\r
5329         FLAG_X = FLAG_C = CFLAG_8(res);\r
5330         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5331         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5332 \r
5333         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5334 }\r
5335 \r
5336 \r
5337 void m68k_op_sub_8_er_pi(void)\r
5338 {\r
5339         uint* r_dst = &DX;\r
5340         uint src = OPER_AY_PI_8();\r
5341         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5342         uint res = dst - src;\r
5343 \r
5344         FLAG_N = NFLAG_8(res);\r
5345         FLAG_X = FLAG_C = CFLAG_8(res);\r
5346         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5347         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5348 \r
5349         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5350 }\r
5351 \r
5352 \r
5353 void m68k_op_sub_8_er_pi7(void)\r
5354 {\r
5355         uint* r_dst = &DX;\r
5356         uint src = OPER_A7_PI_8();\r
5357         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5358         uint res = dst - src;\r
5359 \r
5360         FLAG_N = NFLAG_8(res);\r
5361         FLAG_X = FLAG_C = CFLAG_8(res);\r
5362         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5363         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5364 \r
5365         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5366 }\r
5367 \r
5368 \r
5369 void m68k_op_sub_8_er_pd(void)\r
5370 {\r
5371         uint* r_dst = &DX;\r
5372         uint src = OPER_AY_PD_8();\r
5373         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5374         uint res = dst - src;\r
5375 \r
5376         FLAG_N = NFLAG_8(res);\r
5377         FLAG_X = FLAG_C = CFLAG_8(res);\r
5378         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5379         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5380 \r
5381         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5382 }\r
5383 \r
5384 \r
5385 void m68k_op_sub_8_er_pd7(void)\r
5386 {\r
5387         uint* r_dst = &DX;\r
5388         uint src = OPER_A7_PD_8();\r
5389         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5390         uint res = dst - src;\r
5391 \r
5392         FLAG_N = NFLAG_8(res);\r
5393         FLAG_X = FLAG_C = CFLAG_8(res);\r
5394         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5395         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5396 \r
5397         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5398 }\r
5399 \r
5400 \r
5401 void m68k_op_sub_8_er_di(void)\r
5402 {\r
5403         uint* r_dst = &DX;\r
5404         uint src = OPER_AY_DI_8();\r
5405         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5406         uint res = dst - src;\r
5407 \r
5408         FLAG_N = NFLAG_8(res);\r
5409         FLAG_X = FLAG_C = CFLAG_8(res);\r
5410         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5411         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5412 \r
5413         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5414 }\r
5415 \r
5416 \r
5417 void m68k_op_sub_8_er_ix(void)\r
5418 {\r
5419         uint* r_dst = &DX;\r
5420         uint src = OPER_AY_IX_8();\r
5421         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5422         uint res = dst - src;\r
5423 \r
5424         FLAG_N = NFLAG_8(res);\r
5425         FLAG_X = FLAG_C = CFLAG_8(res);\r
5426         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5427         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5428 \r
5429         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5430 }\r
5431 \r
5432 \r
5433 void m68k_op_sub_8_er_aw(void)\r
5434 {\r
5435         uint* r_dst = &DX;\r
5436         uint src = OPER_AW_8();\r
5437         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5438         uint res = dst - src;\r
5439 \r
5440         FLAG_N = NFLAG_8(res);\r
5441         FLAG_X = FLAG_C = CFLAG_8(res);\r
5442         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5443         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5444 \r
5445         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5446 }\r
5447 \r
5448 \r
5449 void m68k_op_sub_8_er_al(void)\r
5450 {\r
5451         uint* r_dst = &DX;\r
5452         uint src = OPER_AL_8();\r
5453         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5454         uint res = dst - src;\r
5455 \r
5456         FLAG_N = NFLAG_8(res);\r
5457         FLAG_X = FLAG_C = CFLAG_8(res);\r
5458         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5459         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5460 \r
5461         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5462 }\r
5463 \r
5464 \r
5465 void m68k_op_sub_8_er_pcdi(void)\r
5466 {\r
5467         uint* r_dst = &DX;\r
5468         uint src = OPER_PCDI_8();\r
5469         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5470         uint res = dst - src;\r
5471 \r
5472         FLAG_N = NFLAG_8(res);\r
5473         FLAG_X = FLAG_C = CFLAG_8(res);\r
5474         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5475         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5476 \r
5477         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5478 }\r
5479 \r
5480 \r
5481 void m68k_op_sub_8_er_pcix(void)\r
5482 {\r
5483         uint* r_dst = &DX;\r
5484         uint src = OPER_PCIX_8();\r
5485         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5486         uint res = dst - src;\r
5487 \r
5488         FLAG_N = NFLAG_8(res);\r
5489         FLAG_X = FLAG_C = CFLAG_8(res);\r
5490         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5491         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5492 \r
5493         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5494 }\r
5495 \r
5496 \r
5497 void m68k_op_sub_8_er_i(void)\r
5498 {\r
5499         uint* r_dst = &DX;\r
5500         uint src = OPER_I_8();\r
5501         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
5502         uint res = dst - src;\r
5503 \r
5504         FLAG_N = NFLAG_8(res);\r
5505         FLAG_X = FLAG_C = CFLAG_8(res);\r
5506         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5507         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5508 \r
5509         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
5510 }\r
5511 \r
5512 \r
5513 void m68k_op_sub_16_er_d(void)\r
5514 {\r
5515         uint* r_dst = &DX;\r
5516         uint src = MASK_OUT_ABOVE_16(DY);\r
5517         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5518         uint res = dst - src;\r
5519 \r
5520         FLAG_N = NFLAG_16(res);\r
5521         FLAG_X = FLAG_C = CFLAG_16(res);\r
5522         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5523         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5524 \r
5525         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5526 }\r
5527 \r
5528 \r
5529 void m68k_op_sub_16_er_a(void)\r
5530 {\r
5531         uint* r_dst = &DX;\r
5532         uint src = MASK_OUT_ABOVE_16(AY);\r
5533         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5534         uint res = dst - src;\r
5535 \r
5536         FLAG_N = NFLAG_16(res);\r
5537         FLAG_X = FLAG_C = CFLAG_16(res);\r
5538         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5539         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5540 \r
5541         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5542 }\r
5543 \r
5544 \r
5545 void m68k_op_sub_16_er_ai(void)\r
5546 {\r
5547         uint* r_dst = &DX;\r
5548         uint src = OPER_AY_AI_16();\r
5549         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5550         uint res = dst - src;\r
5551 \r
5552         FLAG_N = NFLAG_16(res);\r
5553         FLAG_X = FLAG_C = CFLAG_16(res);\r
5554         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5555         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5556 \r
5557         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5558 }\r
5559 \r
5560 \r
5561 void m68k_op_sub_16_er_pi(void)\r
5562 {\r
5563         uint* r_dst = &DX;\r
5564         uint src = OPER_AY_PI_16();\r
5565         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5566         uint res = dst - src;\r
5567 \r
5568         FLAG_N = NFLAG_16(res);\r
5569         FLAG_X = FLAG_C = CFLAG_16(res);\r
5570         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5571         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5572 \r
5573         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5574 }\r
5575 \r
5576 \r
5577 void m68k_op_sub_16_er_pd(void)\r
5578 {\r
5579         uint* r_dst = &DX;\r
5580         uint src = OPER_AY_PD_16();\r
5581         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5582         uint res = dst - src;\r
5583 \r
5584         FLAG_N = NFLAG_16(res);\r
5585         FLAG_X = FLAG_C = CFLAG_16(res);\r
5586         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5587         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5588 \r
5589         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5590 }\r
5591 \r
5592 \r
5593 void m68k_op_sub_16_er_di(void)\r
5594 {\r
5595         uint* r_dst = &DX;\r
5596         uint src = OPER_AY_DI_16();\r
5597         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5598         uint res = dst - src;\r
5599 \r
5600         FLAG_N = NFLAG_16(res);\r
5601         FLAG_X = FLAG_C = CFLAG_16(res);\r
5602         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5603         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5604 \r
5605         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5606 }\r
5607 \r
5608 \r
5609 void m68k_op_sub_16_er_ix(void)\r
5610 {\r
5611         uint* r_dst = &DX;\r
5612         uint src = OPER_AY_IX_16();\r
5613         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5614         uint res = dst - src;\r
5615 \r
5616         FLAG_N = NFLAG_16(res);\r
5617         FLAG_X = FLAG_C = CFLAG_16(res);\r
5618         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5619         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5620 \r
5621         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5622 }\r
5623 \r
5624 \r
5625 void m68k_op_sub_16_er_aw(void)\r
5626 {\r
5627         uint* r_dst = &DX;\r
5628         uint src = OPER_AW_16();\r
5629         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5630         uint res = dst - src;\r
5631 \r
5632         FLAG_N = NFLAG_16(res);\r
5633         FLAG_X = FLAG_C = CFLAG_16(res);\r
5634         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5635         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5636 \r
5637         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5638 }\r
5639 \r
5640 \r
5641 void m68k_op_sub_16_er_al(void)\r
5642 {\r
5643         uint* r_dst = &DX;\r
5644         uint src = OPER_AL_16();\r
5645         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5646         uint res = dst - src;\r
5647 \r
5648         FLAG_N = NFLAG_16(res);\r
5649         FLAG_X = FLAG_C = CFLAG_16(res);\r
5650         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5651         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5652 \r
5653         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5654 }\r
5655 \r
5656 \r
5657 void m68k_op_sub_16_er_pcdi(void)\r
5658 {\r
5659         uint* r_dst = &DX;\r
5660         uint src = OPER_PCDI_16();\r
5661         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5662         uint res = dst - src;\r
5663 \r
5664         FLAG_N = NFLAG_16(res);\r
5665         FLAG_X = FLAG_C = CFLAG_16(res);\r
5666         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5667         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5668 \r
5669         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5670 }\r
5671 \r
5672 \r
5673 void m68k_op_sub_16_er_pcix(void)\r
5674 {\r
5675         uint* r_dst = &DX;\r
5676         uint src = OPER_PCIX_16();\r
5677         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5678         uint res = dst - src;\r
5679 \r
5680         FLAG_N = NFLAG_16(res);\r
5681         FLAG_X = FLAG_C = CFLAG_16(res);\r
5682         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5683         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5684 \r
5685         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5686 }\r
5687 \r
5688 \r
5689 void m68k_op_sub_16_er_i(void)\r
5690 {\r
5691         uint* r_dst = &DX;\r
5692         uint src = OPER_I_16();\r
5693         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
5694         uint res = dst - src;\r
5695 \r
5696         FLAG_N = NFLAG_16(res);\r
5697         FLAG_X = FLAG_C = CFLAG_16(res);\r
5698         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
5699         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
5700 \r
5701         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
5702 }\r
5703 \r
5704 \r
5705 void m68k_op_sub_32_er_d(void)\r
5706 {\r
5707         uint* r_dst = &DX;\r
5708         uint src = DY;\r
5709         uint dst = *r_dst;\r
5710         uint res = dst - src;\r
5711 \r
5712         FLAG_N = NFLAG_32(res);\r
5713         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5714         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5715         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5716 \r
5717         *r_dst = FLAG_Z;\r
5718 }\r
5719 \r
5720 \r
5721 void m68k_op_sub_32_er_a(void)\r
5722 {\r
5723         uint* r_dst = &DX;\r
5724         uint src = AY;\r
5725         uint dst = *r_dst;\r
5726         uint res = dst - src;\r
5727 \r
5728         FLAG_N = NFLAG_32(res);\r
5729         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5730         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5731         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5732 \r
5733         *r_dst = FLAG_Z;\r
5734 }\r
5735 \r
5736 \r
5737 void m68k_op_sub_32_er_ai(void)\r
5738 {\r
5739         uint* r_dst = &DX;\r
5740         uint src = OPER_AY_AI_32();\r
5741         uint dst = *r_dst;\r
5742         uint res = dst - src;\r
5743 \r
5744         FLAG_N = NFLAG_32(res);\r
5745         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5746         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5747         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5748 \r
5749         *r_dst = FLAG_Z;\r
5750 }\r
5751 \r
5752 \r
5753 void m68k_op_sub_32_er_pi(void)\r
5754 {\r
5755         uint* r_dst = &DX;\r
5756         uint src = OPER_AY_PI_32();\r
5757         uint dst = *r_dst;\r
5758         uint res = dst - src;\r
5759 \r
5760         FLAG_N = NFLAG_32(res);\r
5761         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5762         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5763         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5764 \r
5765         *r_dst = FLAG_Z;\r
5766 }\r
5767 \r
5768 \r
5769 void m68k_op_sub_32_er_pd(void)\r
5770 {\r
5771         uint* r_dst = &DX;\r
5772         uint src = OPER_AY_PD_32();\r
5773         uint dst = *r_dst;\r
5774         uint res = dst - src;\r
5775 \r
5776         FLAG_N = NFLAG_32(res);\r
5777         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5778         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5779         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5780 \r
5781         *r_dst = FLAG_Z;\r
5782 }\r
5783 \r
5784 \r
5785 void m68k_op_sub_32_er_di(void)\r
5786 {\r
5787         uint* r_dst = &DX;\r
5788         uint src = OPER_AY_DI_32();\r
5789         uint dst = *r_dst;\r
5790         uint res = dst - src;\r
5791 \r
5792         FLAG_N = NFLAG_32(res);\r
5793         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5794         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5795         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5796 \r
5797         *r_dst = FLAG_Z;\r
5798 }\r
5799 \r
5800 \r
5801 void m68k_op_sub_32_er_ix(void)\r
5802 {\r
5803         uint* r_dst = &DX;\r
5804         uint src = OPER_AY_IX_32();\r
5805         uint dst = *r_dst;\r
5806         uint res = dst - src;\r
5807 \r
5808         FLAG_N = NFLAG_32(res);\r
5809         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5810         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5811         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5812 \r
5813         *r_dst = FLAG_Z;\r
5814 }\r
5815 \r
5816 \r
5817 void m68k_op_sub_32_er_aw(void)\r
5818 {\r
5819         uint* r_dst = &DX;\r
5820         uint src = OPER_AW_32();\r
5821         uint dst = *r_dst;\r
5822         uint res = dst - src;\r
5823 \r
5824         FLAG_N = NFLAG_32(res);\r
5825         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5826         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5827         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5828 \r
5829         *r_dst = FLAG_Z;\r
5830 }\r
5831 \r
5832 \r
5833 void m68k_op_sub_32_er_al(void)\r
5834 {\r
5835         uint* r_dst = &DX;\r
5836         uint src = OPER_AL_32();\r
5837         uint dst = *r_dst;\r
5838         uint res = dst - src;\r
5839 \r
5840         FLAG_N = NFLAG_32(res);\r
5841         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5842         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5843         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5844 \r
5845         *r_dst = FLAG_Z;\r
5846 }\r
5847 \r
5848 \r
5849 void m68k_op_sub_32_er_pcdi(void)\r
5850 {\r
5851         uint* r_dst = &DX;\r
5852         uint src = OPER_PCDI_32();\r
5853         uint dst = *r_dst;\r
5854         uint res = dst - src;\r
5855 \r
5856         FLAG_N = NFLAG_32(res);\r
5857         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5858         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5859         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5860 \r
5861         *r_dst = FLAG_Z;\r
5862 }\r
5863 \r
5864 \r
5865 void m68k_op_sub_32_er_pcix(void)\r
5866 {\r
5867         uint* r_dst = &DX;\r
5868         uint src = OPER_PCIX_32();\r
5869         uint dst = *r_dst;\r
5870         uint res = dst - src;\r
5871 \r
5872         FLAG_N = NFLAG_32(res);\r
5873         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5874         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5875         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5876 \r
5877         *r_dst = FLAG_Z;\r
5878 }\r
5879 \r
5880 \r
5881 void m68k_op_sub_32_er_i(void)\r
5882 {\r
5883         uint* r_dst = &DX;\r
5884         uint src = OPER_I_32();\r
5885         uint dst = *r_dst;\r
5886         uint res = dst - src;\r
5887 \r
5888         FLAG_N = NFLAG_32(res);\r
5889         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
5890         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
5891         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
5892 \r
5893         *r_dst = FLAG_Z;\r
5894 }\r
5895 \r
5896 \r
5897 void m68k_op_sub_8_re_ai(void)\r
5898 {\r
5899         uint ea = EA_AY_AI_8();\r
5900         uint src = MASK_OUT_ABOVE_8(DX);\r
5901         uint dst = m68ki_read_8(ea);\r
5902         uint res = dst - src;\r
5903 \r
5904         FLAG_N = NFLAG_8(res);\r
5905         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5906         FLAG_X = FLAG_C = CFLAG_8(res);\r
5907         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5908 \r
5909         m68ki_write_8(ea, FLAG_Z);\r
5910 }\r
5911 \r
5912 \r
5913 void m68k_op_sub_8_re_pi(void)\r
5914 {\r
5915         uint ea = EA_AY_PI_8();\r
5916         uint src = MASK_OUT_ABOVE_8(DX);\r
5917         uint dst = m68ki_read_8(ea);\r
5918         uint res = dst - src;\r
5919 \r
5920         FLAG_N = NFLAG_8(res);\r
5921         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5922         FLAG_X = FLAG_C = CFLAG_8(res);\r
5923         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5924 \r
5925         m68ki_write_8(ea, FLAG_Z);\r
5926 }\r
5927 \r
5928 \r
5929 void m68k_op_sub_8_re_pi7(void)\r
5930 {\r
5931         uint ea = EA_A7_PI_8();\r
5932         uint src = MASK_OUT_ABOVE_8(DX);\r
5933         uint dst = m68ki_read_8(ea);\r
5934         uint res = dst - src;\r
5935 \r
5936         FLAG_N = NFLAG_8(res);\r
5937         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5938         FLAG_X = FLAG_C = CFLAG_8(res);\r
5939         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5940 \r
5941         m68ki_write_8(ea, FLAG_Z);\r
5942 }\r
5943 \r
5944 \r
5945 void m68k_op_sub_8_re_pd(void)\r
5946 {\r
5947         uint ea = EA_AY_PD_8();\r
5948         uint src = MASK_OUT_ABOVE_8(DX);\r
5949         uint dst = m68ki_read_8(ea);\r
5950         uint res = dst - src;\r
5951 \r
5952         FLAG_N = NFLAG_8(res);\r
5953         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5954         FLAG_X = FLAG_C = CFLAG_8(res);\r
5955         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5956 \r
5957         m68ki_write_8(ea, FLAG_Z);\r
5958 }\r
5959 \r
5960 \r
5961 void m68k_op_sub_8_re_pd7(void)\r
5962 {\r
5963         uint ea = EA_A7_PD_8();\r
5964         uint src = MASK_OUT_ABOVE_8(DX);\r
5965         uint dst = m68ki_read_8(ea);\r
5966         uint res = dst - src;\r
5967 \r
5968         FLAG_N = NFLAG_8(res);\r
5969         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5970         FLAG_X = FLAG_C = CFLAG_8(res);\r
5971         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5972 \r
5973         m68ki_write_8(ea, FLAG_Z);\r
5974 }\r
5975 \r
5976 \r
5977 void m68k_op_sub_8_re_di(void)\r
5978 {\r
5979         uint ea = EA_AY_DI_8();\r
5980         uint src = MASK_OUT_ABOVE_8(DX);\r
5981         uint dst = m68ki_read_8(ea);\r
5982         uint res = dst - src;\r
5983 \r
5984         FLAG_N = NFLAG_8(res);\r
5985         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
5986         FLAG_X = FLAG_C = CFLAG_8(res);\r
5987         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
5988 \r
5989         m68ki_write_8(ea, FLAG_Z);\r
5990 }\r
5991 \r
5992 \r
5993 void m68k_op_sub_8_re_ix(void)\r
5994 {\r
5995         uint ea = EA_AY_IX_8();\r
5996         uint src = MASK_OUT_ABOVE_8(DX);\r
5997         uint dst = m68ki_read_8(ea);\r
5998         uint res = dst - src;\r
5999 \r
6000         FLAG_N = NFLAG_8(res);\r
6001         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6002         FLAG_X = FLAG_C = CFLAG_8(res);\r
6003         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6004 \r
6005         m68ki_write_8(ea, FLAG_Z);\r
6006 }\r
6007 \r
6008 \r
6009 void m68k_op_sub_8_re_aw(void)\r
6010 {\r
6011         uint ea = EA_AW_8();\r
6012         uint src = MASK_OUT_ABOVE_8(DX);\r
6013         uint dst = m68ki_read_8(ea);\r
6014         uint res = dst - src;\r
6015 \r
6016         FLAG_N = NFLAG_8(res);\r
6017         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6018         FLAG_X = FLAG_C = CFLAG_8(res);\r
6019         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6020 \r
6021         m68ki_write_8(ea, FLAG_Z);\r
6022 }\r
6023 \r
6024 \r
6025 void m68k_op_sub_8_re_al(void)\r
6026 {\r
6027         uint ea = EA_AL_8();\r
6028         uint src = MASK_OUT_ABOVE_8(DX);\r
6029         uint dst = m68ki_read_8(ea);\r
6030         uint res = dst - src;\r
6031 \r
6032         FLAG_N = NFLAG_8(res);\r
6033         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6034         FLAG_X = FLAG_C = CFLAG_8(res);\r
6035         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6036 \r
6037         m68ki_write_8(ea, FLAG_Z);\r
6038 }\r
6039 \r
6040 \r
6041 void m68k_op_sub_16_re_ai(void)\r
6042 {\r
6043         uint ea = EA_AY_AI_16();\r
6044         uint src = MASK_OUT_ABOVE_16(DX);\r
6045         uint dst = m68ki_read_16(ea);\r
6046         uint res = dst - src;\r
6047 \r
6048         FLAG_N = NFLAG_16(res);\r
6049         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6050         FLAG_X = FLAG_C = CFLAG_16(res);\r
6051         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6052 \r
6053         m68ki_write_16(ea, FLAG_Z);\r
6054 }\r
6055 \r
6056 \r
6057 void m68k_op_sub_16_re_pi(void)\r
6058 {\r
6059         uint ea = EA_AY_PI_16();\r
6060         uint src = MASK_OUT_ABOVE_16(DX);\r
6061         uint dst = m68ki_read_16(ea);\r
6062         uint res = dst - src;\r
6063 \r
6064         FLAG_N = NFLAG_16(res);\r
6065         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6066         FLAG_X = FLAG_C = CFLAG_16(res);\r
6067         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6068 \r
6069         m68ki_write_16(ea, FLAG_Z);\r
6070 }\r
6071 \r
6072 \r
6073 void m68k_op_sub_16_re_pd(void)\r
6074 {\r
6075         uint ea = EA_AY_PD_16();\r
6076         uint src = MASK_OUT_ABOVE_16(DX);\r
6077         uint dst = m68ki_read_16(ea);\r
6078         uint res = dst - src;\r
6079 \r
6080         FLAG_N = NFLAG_16(res);\r
6081         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6082         FLAG_X = FLAG_C = CFLAG_16(res);\r
6083         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6084 \r
6085         m68ki_write_16(ea, FLAG_Z);\r
6086 }\r
6087 \r
6088 \r
6089 void m68k_op_sub_16_re_di(void)\r
6090 {\r
6091         uint ea = EA_AY_DI_16();\r
6092         uint src = MASK_OUT_ABOVE_16(DX);\r
6093         uint dst = m68ki_read_16(ea);\r
6094         uint res = dst - src;\r
6095 \r
6096         FLAG_N = NFLAG_16(res);\r
6097         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6098         FLAG_X = FLAG_C = CFLAG_16(res);\r
6099         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6100 \r
6101         m68ki_write_16(ea, FLAG_Z);\r
6102 }\r
6103 \r
6104 \r
6105 void m68k_op_sub_16_re_ix(void)\r
6106 {\r
6107         uint ea = EA_AY_IX_16();\r
6108         uint src = MASK_OUT_ABOVE_16(DX);\r
6109         uint dst = m68ki_read_16(ea);\r
6110         uint res = dst - src;\r
6111 \r
6112         FLAG_N = NFLAG_16(res);\r
6113         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6114         FLAG_X = FLAG_C = CFLAG_16(res);\r
6115         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6116 \r
6117         m68ki_write_16(ea, FLAG_Z);\r
6118 }\r
6119 \r
6120 \r
6121 void m68k_op_sub_16_re_aw(void)\r
6122 {\r
6123         uint ea = EA_AW_16();\r
6124         uint src = MASK_OUT_ABOVE_16(DX);\r
6125         uint dst = m68ki_read_16(ea);\r
6126         uint res = dst - src;\r
6127 \r
6128         FLAG_N = NFLAG_16(res);\r
6129         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6130         FLAG_X = FLAG_C = CFLAG_16(res);\r
6131         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6132 \r
6133         m68ki_write_16(ea, FLAG_Z);\r
6134 }\r
6135 \r
6136 \r
6137 void m68k_op_sub_16_re_al(void)\r
6138 {\r
6139         uint ea = EA_AL_16();\r
6140         uint src = MASK_OUT_ABOVE_16(DX);\r
6141         uint dst = m68ki_read_16(ea);\r
6142         uint res = dst - src;\r
6143 \r
6144         FLAG_N = NFLAG_16(res);\r
6145         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6146         FLAG_X = FLAG_C = CFLAG_16(res);\r
6147         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6148 \r
6149         m68ki_write_16(ea, FLAG_Z);\r
6150 }\r
6151 \r
6152 \r
6153 void m68k_op_sub_32_re_ai(void)\r
6154 {\r
6155         uint ea = EA_AY_AI_32();\r
6156         uint src = DX;\r
6157         uint dst = m68ki_read_32(ea);\r
6158         uint res = dst - src;\r
6159 \r
6160         FLAG_N = NFLAG_32(res);\r
6161         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6162         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6163         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6164 \r
6165         m68ki_write_32(ea, FLAG_Z);\r
6166 }\r
6167 \r
6168 \r
6169 void m68k_op_sub_32_re_pi(void)\r
6170 {\r
6171         uint ea = EA_AY_PI_32();\r
6172         uint src = DX;\r
6173         uint dst = m68ki_read_32(ea);\r
6174         uint res = dst - src;\r
6175 \r
6176         FLAG_N = NFLAG_32(res);\r
6177         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6178         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6179         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6180 \r
6181         m68ki_write_32(ea, FLAG_Z);\r
6182 }\r
6183 \r
6184 \r
6185 void m68k_op_sub_32_re_pd(void)\r
6186 {\r
6187         uint ea = EA_AY_PD_32();\r
6188         uint src = DX;\r
6189         uint dst = m68ki_read_32(ea);\r
6190         uint res = dst - src;\r
6191 \r
6192         FLAG_N = NFLAG_32(res);\r
6193         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6194         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6195         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6196 \r
6197         m68ki_write_32(ea, FLAG_Z);\r
6198 }\r
6199 \r
6200 \r
6201 void m68k_op_sub_32_re_di(void)\r
6202 {\r
6203         uint ea = EA_AY_DI_32();\r
6204         uint src = DX;\r
6205         uint dst = m68ki_read_32(ea);\r
6206         uint res = dst - src;\r
6207 \r
6208         FLAG_N = NFLAG_32(res);\r
6209         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6210         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6211         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6212 \r
6213         m68ki_write_32(ea, FLAG_Z);\r
6214 }\r
6215 \r
6216 \r
6217 void m68k_op_sub_32_re_ix(void)\r
6218 {\r
6219         uint ea = EA_AY_IX_32();\r
6220         uint src = DX;\r
6221         uint dst = m68ki_read_32(ea);\r
6222         uint res = dst - src;\r
6223 \r
6224         FLAG_N = NFLAG_32(res);\r
6225         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6226         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6227         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6228 \r
6229         m68ki_write_32(ea, FLAG_Z);\r
6230 }\r
6231 \r
6232 \r
6233 void m68k_op_sub_32_re_aw(void)\r
6234 {\r
6235         uint ea = EA_AW_32();\r
6236         uint src = DX;\r
6237         uint dst = m68ki_read_32(ea);\r
6238         uint res = dst - src;\r
6239 \r
6240         FLAG_N = NFLAG_32(res);\r
6241         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6242         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6243         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6244 \r
6245         m68ki_write_32(ea, FLAG_Z);\r
6246 }\r
6247 \r
6248 \r
6249 void m68k_op_sub_32_re_al(void)\r
6250 {\r
6251         uint ea = EA_AL_32();\r
6252         uint src = DX;\r
6253         uint dst = m68ki_read_32(ea);\r
6254         uint res = dst - src;\r
6255 \r
6256         FLAG_N = NFLAG_32(res);\r
6257         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6258         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6259         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6260 \r
6261         m68ki_write_32(ea, FLAG_Z);\r
6262 }\r
6263 \r
6264 \r
6265 void m68k_op_suba_16_d(void)\r
6266 {\r
6267         uint* r_dst = &AX;\r
6268 \r
6269         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(DY));\r
6270 }\r
6271 \r
6272 \r
6273 void m68k_op_suba_16_a(void)\r
6274 {\r
6275         uint* r_dst = &AX;\r
6276 \r
6277         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(AY));\r
6278 }\r
6279 \r
6280 \r
6281 void m68k_op_suba_16_ai(void)\r
6282 {\r
6283         uint* r_dst = &AX;\r
6284 \r
6285         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AY_AI_16()));\r
6286 }\r
6287 \r
6288 \r
6289 void m68k_op_suba_16_pi(void)\r
6290 {\r
6291         uint* r_dst = &AX;\r
6292 \r
6293         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AY_PI_16()));\r
6294 }\r
6295 \r
6296 \r
6297 void m68k_op_suba_16_pd(void)\r
6298 {\r
6299         uint* r_dst = &AX;\r
6300 \r
6301         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AY_PD_16()));\r
6302 }\r
6303 \r
6304 \r
6305 void m68k_op_suba_16_di(void)\r
6306 {\r
6307         uint* r_dst = &AX;\r
6308 \r
6309         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AY_DI_16()));\r
6310 }\r
6311 \r
6312 \r
6313 void m68k_op_suba_16_ix(void)\r
6314 {\r
6315         uint* r_dst = &AX;\r
6316 \r
6317         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AY_IX_16()));\r
6318 }\r
6319 \r
6320 \r
6321 void m68k_op_suba_16_aw(void)\r
6322 {\r
6323         uint* r_dst = &AX;\r
6324 \r
6325         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AW_16()));\r
6326 }\r
6327 \r
6328 \r
6329 void m68k_op_suba_16_al(void)\r
6330 {\r
6331         uint* r_dst = &AX;\r
6332 \r
6333         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_AL_16()));\r
6334 }\r
6335 \r
6336 \r
6337 void m68k_op_suba_16_pcdi(void)\r
6338 {\r
6339         uint* r_dst = &AX;\r
6340 \r
6341         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_PCDI_16()));\r
6342 }\r
6343 \r
6344 \r
6345 void m68k_op_suba_16_pcix(void)\r
6346 {\r
6347         uint* r_dst = &AX;\r
6348 \r
6349         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_PCIX_16()));\r
6350 }\r
6351 \r
6352 \r
6353 void m68k_op_suba_16_i(void)\r
6354 {\r
6355         uint* r_dst = &AX;\r
6356 \r
6357         *r_dst = MASK_OUT_ABOVE_32(*r_dst - MAKE_INT_16(OPER_I_16()));\r
6358 }\r
6359 \r
6360 \r
6361 void m68k_op_suba_32_d(void)\r
6362 {\r
6363         uint* r_dst = &AX;\r
6364 \r
6365         *r_dst = MASK_OUT_ABOVE_32(*r_dst - DY);\r
6366 }\r
6367 \r
6368 \r
6369 void m68k_op_suba_32_a(void)\r
6370 {\r
6371         uint* r_dst = &AX;\r
6372 \r
6373         *r_dst = MASK_OUT_ABOVE_32(*r_dst - AY);\r
6374 }\r
6375 \r
6376 \r
6377 void m68k_op_suba_32_ai(void)\r
6378 {\r
6379         uint* r_dst = &AX;\r
6380 \r
6381         *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AY_AI_32());\r
6382 }\r
6383 \r
6384 \r
6385 void m68k_op_suba_32_pi(void)\r
6386 {\r
6387         uint* r_dst = &AX;\r
6388 \r
6389         *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AY_PI_32());\r
6390 }\r
6391 \r
6392 \r
6393 void m68k_op_suba_32_pd(void)\r
6394 {\r
6395         uint* r_dst = &AX;\r
6396 \r
6397         *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AY_PD_32());\r
6398 }\r
6399 \r
6400 \r
6401 void m68k_op_suba_32_di(void)\r
6402 {\r
6403         uint* r_dst = &AX;\r
6404 \r
6405         *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AY_DI_32());\r
6406 }\r
6407 \r
6408 \r
6409 void m68k_op_suba_32_ix(void)\r
6410 {\r
6411         uint* r_dst = &AX;\r
6412 \r
6413         *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AY_IX_32());\r
6414 }\r
6415 \r
6416 \r
6417 void m68k_op_suba_32_aw(void)\r
6418 {\r
6419         uint* r_dst = &AX;\r
6420 \r
6421         *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AW_32());\r
6422 }\r
6423 \r
6424 \r
6425 void m68k_op_suba_32_al(void)\r
6426 {\r
6427         uint* r_dst = &AX;\r
6428 \r
6429         *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_AL_32());\r
6430 }\r
6431 \r
6432 \r
6433 void m68k_op_suba_32_pcdi(void)\r
6434 {\r
6435         uint* r_dst = &AX;\r
6436 \r
6437         *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_PCDI_32());\r
6438 }\r
6439 \r
6440 \r
6441 void m68k_op_suba_32_pcix(void)\r
6442 {\r
6443         uint* r_dst = &AX;\r
6444 \r
6445         *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_PCIX_32());\r
6446 }\r
6447 \r
6448 \r
6449 void m68k_op_suba_32_i(void)\r
6450 {\r
6451         uint* r_dst = &AX;\r
6452 \r
6453         *r_dst = MASK_OUT_ABOVE_32(*r_dst - OPER_I_32());\r
6454 }\r
6455 \r
6456 \r
6457 void m68k_op_subi_8_d(void)\r
6458 {\r
6459         uint* r_dst = &DY;\r
6460         uint src = OPER_I_8();\r
6461         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
6462         uint res = dst - src;\r
6463 \r
6464         FLAG_N = NFLAG_8(res);\r
6465         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6466         FLAG_X = FLAG_C = CFLAG_8(res);\r
6467         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6468 \r
6469         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
6470 }\r
6471 \r
6472 \r
6473 void m68k_op_subi_8_ai(void)\r
6474 {\r
6475         uint src = OPER_I_8();\r
6476         uint ea = EA_AY_AI_8();\r
6477         uint dst = m68ki_read_8(ea);\r
6478         uint res = dst - src;\r
6479 \r
6480         FLAG_N = NFLAG_8(res);\r
6481         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6482         FLAG_X = FLAG_C = CFLAG_8(res);\r
6483         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6484 \r
6485         m68ki_write_8(ea, FLAG_Z);\r
6486 }\r
6487 \r
6488 \r
6489 void m68k_op_subi_8_pi(void)\r
6490 {\r
6491         uint src = OPER_I_8();\r
6492         uint ea = EA_AY_PI_8();\r
6493         uint dst = m68ki_read_8(ea);\r
6494         uint res = dst - src;\r
6495 \r
6496         FLAG_N = NFLAG_8(res);\r
6497         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6498         FLAG_X = FLAG_C = CFLAG_8(res);\r
6499         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6500 \r
6501         m68ki_write_8(ea, FLAG_Z);\r
6502 }\r
6503 \r
6504 \r
6505 void m68k_op_subi_8_pi7(void)\r
6506 {\r
6507         uint src = OPER_I_8();\r
6508         uint ea = EA_A7_PI_8();\r
6509         uint dst = m68ki_read_8(ea);\r
6510         uint res = dst - src;\r
6511 \r
6512         FLAG_N = NFLAG_8(res);\r
6513         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6514         FLAG_X = FLAG_C = CFLAG_8(res);\r
6515         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6516 \r
6517         m68ki_write_8(ea, FLAG_Z);\r
6518 }\r
6519 \r
6520 \r
6521 void m68k_op_subi_8_pd(void)\r
6522 {\r
6523         uint src = OPER_I_8();\r
6524         uint ea = EA_AY_PD_8();\r
6525         uint dst = m68ki_read_8(ea);\r
6526         uint res = dst - src;\r
6527 \r
6528         FLAG_N = NFLAG_8(res);\r
6529         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6530         FLAG_X = FLAG_C = CFLAG_8(res);\r
6531         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6532 \r
6533         m68ki_write_8(ea, FLAG_Z);\r
6534 }\r
6535 \r
6536 \r
6537 void m68k_op_subi_8_pd7(void)\r
6538 {\r
6539         uint src = OPER_I_8();\r
6540         uint ea = EA_A7_PD_8();\r
6541         uint dst = m68ki_read_8(ea);\r
6542         uint res = dst - src;\r
6543 \r
6544         FLAG_N = NFLAG_8(res);\r
6545         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6546         FLAG_X = FLAG_C = CFLAG_8(res);\r
6547         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6548 \r
6549         m68ki_write_8(ea, FLAG_Z);\r
6550 }\r
6551 \r
6552 \r
6553 void m68k_op_subi_8_di(void)\r
6554 {\r
6555         uint src = OPER_I_8();\r
6556         uint ea = EA_AY_DI_8();\r
6557         uint dst = m68ki_read_8(ea);\r
6558         uint res = dst - src;\r
6559 \r
6560         FLAG_N = NFLAG_8(res);\r
6561         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6562         FLAG_X = FLAG_C = CFLAG_8(res);\r
6563         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6564 \r
6565         m68ki_write_8(ea, FLAG_Z);\r
6566 }\r
6567 \r
6568 \r
6569 void m68k_op_subi_8_ix(void)\r
6570 {\r
6571         uint src = OPER_I_8();\r
6572         uint ea = EA_AY_IX_8();\r
6573         uint dst = m68ki_read_8(ea);\r
6574         uint res = dst - src;\r
6575 \r
6576         FLAG_N = NFLAG_8(res);\r
6577         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6578         FLAG_X = FLAG_C = CFLAG_8(res);\r
6579         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6580 \r
6581         m68ki_write_8(ea, FLAG_Z);\r
6582 }\r
6583 \r
6584 \r
6585 void m68k_op_subi_8_aw(void)\r
6586 {\r
6587         uint src = OPER_I_8();\r
6588         uint ea = EA_AW_8();\r
6589         uint dst = m68ki_read_8(ea);\r
6590         uint res = dst - src;\r
6591 \r
6592         FLAG_N = NFLAG_8(res);\r
6593         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6594         FLAG_X = FLAG_C = CFLAG_8(res);\r
6595         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6596 \r
6597         m68ki_write_8(ea, FLAG_Z);\r
6598 }\r
6599 \r
6600 \r
6601 void m68k_op_subi_8_al(void)\r
6602 {\r
6603         uint src = OPER_I_8();\r
6604         uint ea = EA_AL_8();\r
6605         uint dst = m68ki_read_8(ea);\r
6606         uint res = dst - src;\r
6607 \r
6608         FLAG_N = NFLAG_8(res);\r
6609         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6610         FLAG_X = FLAG_C = CFLAG_8(res);\r
6611         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6612 \r
6613         m68ki_write_8(ea, FLAG_Z);\r
6614 }\r
6615 \r
6616 \r
6617 void m68k_op_subi_16_d(void)\r
6618 {\r
6619         uint* r_dst = &DY;\r
6620         uint src = OPER_I_16();\r
6621         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
6622         uint res = dst - src;\r
6623 \r
6624         FLAG_N = NFLAG_16(res);\r
6625         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6626         FLAG_X = FLAG_C = CFLAG_16(res);\r
6627         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6628 \r
6629         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
6630 }\r
6631 \r
6632 \r
6633 void m68k_op_subi_16_ai(void)\r
6634 {\r
6635         uint src = OPER_I_16();\r
6636         uint ea = EA_AY_AI_16();\r
6637         uint dst = m68ki_read_16(ea);\r
6638         uint res = dst - src;\r
6639 \r
6640         FLAG_N = NFLAG_16(res);\r
6641         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6642         FLAG_X = FLAG_C = CFLAG_16(res);\r
6643         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6644 \r
6645         m68ki_write_16(ea, FLAG_Z);\r
6646 }\r
6647 \r
6648 \r
6649 void m68k_op_subi_16_pi(void)\r
6650 {\r
6651         uint src = OPER_I_16();\r
6652         uint ea = EA_AY_PI_16();\r
6653         uint dst = m68ki_read_16(ea);\r
6654         uint res = dst - src;\r
6655 \r
6656         FLAG_N = NFLAG_16(res);\r
6657         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6658         FLAG_X = FLAG_C = CFLAG_16(res);\r
6659         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6660 \r
6661         m68ki_write_16(ea, FLAG_Z);\r
6662 }\r
6663 \r
6664 \r
6665 void m68k_op_subi_16_pd(void)\r
6666 {\r
6667         uint src = OPER_I_16();\r
6668         uint ea = EA_AY_PD_16();\r
6669         uint dst = m68ki_read_16(ea);\r
6670         uint res = dst - src;\r
6671 \r
6672         FLAG_N = NFLAG_16(res);\r
6673         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6674         FLAG_X = FLAG_C = CFLAG_16(res);\r
6675         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6676 \r
6677         m68ki_write_16(ea, FLAG_Z);\r
6678 }\r
6679 \r
6680 \r
6681 void m68k_op_subi_16_di(void)\r
6682 {\r
6683         uint src = OPER_I_16();\r
6684         uint ea = EA_AY_DI_16();\r
6685         uint dst = m68ki_read_16(ea);\r
6686         uint res = dst - src;\r
6687 \r
6688         FLAG_N = NFLAG_16(res);\r
6689         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6690         FLAG_X = FLAG_C = CFLAG_16(res);\r
6691         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6692 \r
6693         m68ki_write_16(ea, FLAG_Z);\r
6694 }\r
6695 \r
6696 \r
6697 void m68k_op_subi_16_ix(void)\r
6698 {\r
6699         uint src = OPER_I_16();\r
6700         uint ea = EA_AY_IX_16();\r
6701         uint dst = m68ki_read_16(ea);\r
6702         uint res = dst - src;\r
6703 \r
6704         FLAG_N = NFLAG_16(res);\r
6705         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6706         FLAG_X = FLAG_C = CFLAG_16(res);\r
6707         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6708 \r
6709         m68ki_write_16(ea, FLAG_Z);\r
6710 }\r
6711 \r
6712 \r
6713 void m68k_op_subi_16_aw(void)\r
6714 {\r
6715         uint src = OPER_I_16();\r
6716         uint ea = EA_AW_16();\r
6717         uint dst = m68ki_read_16(ea);\r
6718         uint res = dst - src;\r
6719 \r
6720         FLAG_N = NFLAG_16(res);\r
6721         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6722         FLAG_X = FLAG_C = CFLAG_16(res);\r
6723         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6724 \r
6725         m68ki_write_16(ea, FLAG_Z);\r
6726 }\r
6727 \r
6728 \r
6729 void m68k_op_subi_16_al(void)\r
6730 {\r
6731         uint src = OPER_I_16();\r
6732         uint ea = EA_AL_16();\r
6733         uint dst = m68ki_read_16(ea);\r
6734         uint res = dst - src;\r
6735 \r
6736         FLAG_N = NFLAG_16(res);\r
6737         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
6738         FLAG_X = FLAG_C = CFLAG_16(res);\r
6739         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
6740 \r
6741         m68ki_write_16(ea, FLAG_Z);\r
6742 }\r
6743 \r
6744 \r
6745 void m68k_op_subi_32_d(void)\r
6746 {\r
6747         uint* r_dst = &DY;\r
6748         uint src = OPER_I_32();\r
6749         uint dst = *r_dst;\r
6750         uint res = dst - src;\r
6751 \r
6752         FLAG_N = NFLAG_32(res);\r
6753         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6754         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6755         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6756 \r
6757         *r_dst = FLAG_Z;\r
6758 }\r
6759 \r
6760 \r
6761 void m68k_op_subi_32_ai(void)\r
6762 {\r
6763         uint src = OPER_I_32();\r
6764         uint ea = EA_AY_AI_32();\r
6765         uint dst = m68ki_read_32(ea);\r
6766         uint res = dst - src;\r
6767 \r
6768         FLAG_N = NFLAG_32(res);\r
6769         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6770         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6771         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6772 \r
6773         m68ki_write_32(ea, FLAG_Z);\r
6774 }\r
6775 \r
6776 \r
6777 void m68k_op_subi_32_pi(void)\r
6778 {\r
6779         uint src = OPER_I_32();\r
6780         uint ea = EA_AY_PI_32();\r
6781         uint dst = m68ki_read_32(ea);\r
6782         uint res = dst - src;\r
6783 \r
6784         FLAG_N = NFLAG_32(res);\r
6785         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6786         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6787         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6788 \r
6789         m68ki_write_32(ea, FLAG_Z);\r
6790 }\r
6791 \r
6792 \r
6793 void m68k_op_subi_32_pd(void)\r
6794 {\r
6795         uint src = OPER_I_32();\r
6796         uint ea = EA_AY_PD_32();\r
6797         uint dst = m68ki_read_32(ea);\r
6798         uint res = dst - src;\r
6799 \r
6800         FLAG_N = NFLAG_32(res);\r
6801         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6802         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6803         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6804 \r
6805         m68ki_write_32(ea, FLAG_Z);\r
6806 }\r
6807 \r
6808 \r
6809 void m68k_op_subi_32_di(void)\r
6810 {\r
6811         uint src = OPER_I_32();\r
6812         uint ea = EA_AY_DI_32();\r
6813         uint dst = m68ki_read_32(ea);\r
6814         uint res = dst - src;\r
6815 \r
6816         FLAG_N = NFLAG_32(res);\r
6817         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6818         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6819         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6820 \r
6821         m68ki_write_32(ea, FLAG_Z);\r
6822 }\r
6823 \r
6824 \r
6825 void m68k_op_subi_32_ix(void)\r
6826 {\r
6827         uint src = OPER_I_32();\r
6828         uint ea = EA_AY_IX_32();\r
6829         uint dst = m68ki_read_32(ea);\r
6830         uint res = dst - src;\r
6831 \r
6832         FLAG_N = NFLAG_32(res);\r
6833         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6834         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6835         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6836 \r
6837         m68ki_write_32(ea, FLAG_Z);\r
6838 }\r
6839 \r
6840 \r
6841 void m68k_op_subi_32_aw(void)\r
6842 {\r
6843         uint src = OPER_I_32();\r
6844         uint ea = EA_AW_32();\r
6845         uint dst = m68ki_read_32(ea);\r
6846         uint res = dst - src;\r
6847 \r
6848         FLAG_N = NFLAG_32(res);\r
6849         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6850         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6851         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6852 \r
6853         m68ki_write_32(ea, FLAG_Z);\r
6854 }\r
6855 \r
6856 \r
6857 void m68k_op_subi_32_al(void)\r
6858 {\r
6859         uint src = OPER_I_32();\r
6860         uint ea = EA_AL_32();\r
6861         uint dst = m68ki_read_32(ea);\r
6862         uint res = dst - src;\r
6863 \r
6864         FLAG_N = NFLAG_32(res);\r
6865         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
6866         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
6867         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
6868 \r
6869         m68ki_write_32(ea, FLAG_Z);\r
6870 }\r
6871 \r
6872 \r
6873 void m68k_op_subq_8_d(void)\r
6874 {\r
6875         uint* r_dst = &DY;\r
6876         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
6877         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
6878         uint res = dst - src;\r
6879 \r
6880         FLAG_N = NFLAG_8(res);\r
6881         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6882         FLAG_X = FLAG_C = CFLAG_8(res);\r
6883         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6884 \r
6885         *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
6886 }\r
6887 \r
6888 \r
6889 void m68k_op_subq_8_ai(void)\r
6890 {\r
6891         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
6892         uint ea = EA_AY_AI_8();\r
6893         uint dst = m68ki_read_8(ea);\r
6894         uint res = dst - src;\r
6895 \r
6896         FLAG_N = NFLAG_8(res);\r
6897         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6898         FLAG_X = FLAG_C = CFLAG_8(res);\r
6899         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6900 \r
6901         m68ki_write_8(ea, FLAG_Z);\r
6902 }\r
6903 \r
6904 \r
6905 void m68k_op_subq_8_pi(void)\r
6906 {\r
6907         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
6908         uint ea = EA_AY_PI_8();\r
6909         uint dst = m68ki_read_8(ea);\r
6910         uint res = dst - src;\r
6911 \r
6912         FLAG_N = NFLAG_8(res);\r
6913         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6914         FLAG_X = FLAG_C = CFLAG_8(res);\r
6915         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6916 \r
6917         m68ki_write_8(ea, FLAG_Z);\r
6918 }\r
6919 \r
6920 \r
6921 void m68k_op_subq_8_pi7(void)\r
6922 {\r
6923         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
6924         uint ea = EA_A7_PI_8();\r
6925         uint dst = m68ki_read_8(ea);\r
6926         uint res = dst - src;\r
6927 \r
6928         FLAG_N = NFLAG_8(res);\r
6929         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6930         FLAG_X = FLAG_C = CFLAG_8(res);\r
6931         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6932 \r
6933         m68ki_write_8(ea, FLAG_Z);\r
6934 }\r
6935 \r
6936 \r
6937 void m68k_op_subq_8_pd(void)\r
6938 {\r
6939         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
6940         uint ea = EA_AY_PD_8();\r
6941         uint dst = m68ki_read_8(ea);\r
6942         uint res = dst - src;\r
6943 \r
6944         FLAG_N = NFLAG_8(res);\r
6945         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6946         FLAG_X = FLAG_C = CFLAG_8(res);\r
6947         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6948 \r
6949         m68ki_write_8(ea, FLAG_Z);\r
6950 }\r
6951 \r
6952 \r
6953 void m68k_op_subq_8_pd7(void)\r
6954 {\r
6955         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
6956         uint ea = EA_A7_PD_8();\r
6957         uint dst = m68ki_read_8(ea);\r
6958         uint res = dst - src;\r
6959 \r
6960         FLAG_N = NFLAG_8(res);\r
6961         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6962         FLAG_X = FLAG_C = CFLAG_8(res);\r
6963         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6964 \r
6965         m68ki_write_8(ea, FLAG_Z);\r
6966 }\r
6967 \r
6968 \r
6969 void m68k_op_subq_8_di(void)\r
6970 {\r
6971         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
6972         uint ea = EA_AY_DI_8();\r
6973         uint dst = m68ki_read_8(ea);\r
6974         uint res = dst - src;\r
6975 \r
6976         FLAG_N = NFLAG_8(res);\r
6977         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6978         FLAG_X = FLAG_C = CFLAG_8(res);\r
6979         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6980 \r
6981         m68ki_write_8(ea, FLAG_Z);\r
6982 }\r
6983 \r
6984 \r
6985 void m68k_op_subq_8_ix(void)\r
6986 {\r
6987         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
6988         uint ea = EA_AY_IX_8();\r
6989         uint dst = m68ki_read_8(ea);\r
6990         uint res = dst - src;\r
6991 \r
6992         FLAG_N = NFLAG_8(res);\r
6993         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
6994         FLAG_X = FLAG_C = CFLAG_8(res);\r
6995         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
6996 \r
6997         m68ki_write_8(ea, FLAG_Z);\r
6998 }\r
6999 \r
7000 \r
7001 void m68k_op_subq_8_aw(void)\r
7002 {\r
7003         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7004         uint ea = EA_AW_8();\r
7005         uint dst = m68ki_read_8(ea);\r
7006         uint res = dst - src;\r
7007 \r
7008         FLAG_N = NFLAG_8(res);\r
7009         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
7010         FLAG_X = FLAG_C = CFLAG_8(res);\r
7011         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
7012 \r
7013         m68ki_write_8(ea, FLAG_Z);\r
7014 }\r
7015 \r
7016 \r
7017 void m68k_op_subq_8_al(void)\r
7018 {\r
7019         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7020         uint ea = EA_AL_8();\r
7021         uint dst = m68ki_read_8(ea);\r
7022         uint res = dst - src;\r
7023 \r
7024         FLAG_N = NFLAG_8(res);\r
7025         FLAG_Z = MASK_OUT_ABOVE_8(res);\r
7026         FLAG_X = FLAG_C = CFLAG_8(res);\r
7027         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
7028 \r
7029         m68ki_write_8(ea, FLAG_Z);\r
7030 }\r
7031 \r
7032 \r
7033 void m68k_op_subq_16_d(void)\r
7034 {\r
7035         uint* r_dst = &DY;\r
7036         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7037         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
7038         uint res = dst - src;\r
7039 \r
7040         FLAG_N = NFLAG_16(res);\r
7041         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
7042         FLAG_X = FLAG_C = CFLAG_16(res);\r
7043         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
7044 \r
7045         *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
7046 }\r
7047 \r
7048 \r
7049 void m68k_op_subq_16_a(void)\r
7050 {\r
7051         uint* r_dst = &AY;\r
7052 \r
7053         *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1));\r
7054 }\r
7055 \r
7056 \r
7057 void m68k_op_subq_16_ai(void)\r
7058 {\r
7059         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7060         uint ea = EA_AY_AI_16();\r
7061         uint dst = m68ki_read_16(ea);\r
7062         uint res = dst - src;\r
7063 \r
7064         FLAG_N = NFLAG_16(res);\r
7065         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
7066         FLAG_X = FLAG_C = CFLAG_16(res);\r
7067         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
7068 \r
7069         m68ki_write_16(ea, FLAG_Z);\r
7070 }\r
7071 \r
7072 \r
7073 void m68k_op_subq_16_pi(void)\r
7074 {\r
7075         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7076         uint ea = EA_AY_PI_16();\r
7077         uint dst = m68ki_read_16(ea);\r
7078         uint res = dst - src;\r
7079 \r
7080         FLAG_N = NFLAG_16(res);\r
7081         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
7082         FLAG_X = FLAG_C = CFLAG_16(res);\r
7083         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
7084 \r
7085         m68ki_write_16(ea, FLAG_Z);\r
7086 }\r
7087 \r
7088 \r
7089 void m68k_op_subq_16_pd(void)\r
7090 {\r
7091         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7092         uint ea = EA_AY_PD_16();\r
7093         uint dst = m68ki_read_16(ea);\r
7094         uint res = dst - src;\r
7095 \r
7096         FLAG_N = NFLAG_16(res);\r
7097         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
7098         FLAG_X = FLAG_C = CFLAG_16(res);\r
7099         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
7100 \r
7101         m68ki_write_16(ea, FLAG_Z);\r
7102 }\r
7103 \r
7104 \r
7105 void m68k_op_subq_16_di(void)\r
7106 {\r
7107         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7108         uint ea = EA_AY_DI_16();\r
7109         uint dst = m68ki_read_16(ea);\r
7110         uint res = dst - src;\r
7111 \r
7112         FLAG_N = NFLAG_16(res);\r
7113         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
7114         FLAG_X = FLAG_C = CFLAG_16(res);\r
7115         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
7116 \r
7117         m68ki_write_16(ea, FLAG_Z);\r
7118 }\r
7119 \r
7120 \r
7121 void m68k_op_subq_16_ix(void)\r
7122 {\r
7123         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7124         uint ea = EA_AY_IX_16();\r
7125         uint dst = m68ki_read_16(ea);\r
7126         uint res = dst - src;\r
7127 \r
7128         FLAG_N = NFLAG_16(res);\r
7129         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
7130         FLAG_X = FLAG_C = CFLAG_16(res);\r
7131         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
7132 \r
7133         m68ki_write_16(ea, FLAG_Z);\r
7134 }\r
7135 \r
7136 \r
7137 void m68k_op_subq_16_aw(void)\r
7138 {\r
7139         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7140         uint ea = EA_AW_16();\r
7141         uint dst = m68ki_read_16(ea);\r
7142         uint res = dst - src;\r
7143 \r
7144         FLAG_N = NFLAG_16(res);\r
7145         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
7146         FLAG_X = FLAG_C = CFLAG_16(res);\r
7147         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
7148 \r
7149         m68ki_write_16(ea, FLAG_Z);\r
7150 }\r
7151 \r
7152 \r
7153 void m68k_op_subq_16_al(void)\r
7154 {\r
7155         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7156         uint ea = EA_AL_16();\r
7157         uint dst = m68ki_read_16(ea);\r
7158         uint res = dst - src;\r
7159 \r
7160         FLAG_N = NFLAG_16(res);\r
7161         FLAG_Z = MASK_OUT_ABOVE_16(res);\r
7162         FLAG_X = FLAG_C = CFLAG_16(res);\r
7163         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
7164 \r
7165         m68ki_write_16(ea, FLAG_Z);\r
7166 }\r
7167 \r
7168 \r
7169 void m68k_op_subq_32_d(void)\r
7170 {\r
7171         uint* r_dst = &DY;\r
7172         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7173         uint dst = *r_dst;\r
7174         uint res = dst - src;\r
7175 \r
7176         FLAG_N = NFLAG_32(res);\r
7177         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
7178         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
7179         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
7180 \r
7181         *r_dst = FLAG_Z;\r
7182 }\r
7183 \r
7184 \r
7185 void m68k_op_subq_32_a(void)\r
7186 {\r
7187         uint* r_dst = &AY;\r
7188 \r
7189         *r_dst = MASK_OUT_ABOVE_32(*r_dst - ((((REG_IR >> 9) - 1) & 7) + 1));\r
7190 }\r
7191 \r
7192 \r
7193 void m68k_op_subq_32_ai(void)\r
7194 {\r
7195         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7196         uint ea = EA_AY_AI_32();\r
7197         uint dst = m68ki_read_32(ea);\r
7198         uint res = dst - src;\r
7199 \r
7200         FLAG_N = NFLAG_32(res);\r
7201         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
7202         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
7203         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
7204 \r
7205         m68ki_write_32(ea, FLAG_Z);\r
7206 }\r
7207 \r
7208 \r
7209 void m68k_op_subq_32_pi(void)\r
7210 {\r
7211         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7212         uint ea = EA_AY_PI_32();\r
7213         uint dst = m68ki_read_32(ea);\r
7214         uint res = dst - src;\r
7215 \r
7216         FLAG_N = NFLAG_32(res);\r
7217         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
7218         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
7219         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
7220 \r
7221         m68ki_write_32(ea, FLAG_Z);\r
7222 }\r
7223 \r
7224 \r
7225 void m68k_op_subq_32_pd(void)\r
7226 {\r
7227         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7228         uint ea = EA_AY_PD_32();\r
7229         uint dst = m68ki_read_32(ea);\r
7230         uint res = dst - src;\r
7231 \r
7232         FLAG_N = NFLAG_32(res);\r
7233         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
7234         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
7235         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
7236 \r
7237         m68ki_write_32(ea, FLAG_Z);\r
7238 }\r
7239 \r
7240 \r
7241 void m68k_op_subq_32_di(void)\r
7242 {\r
7243         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7244         uint ea = EA_AY_DI_32();\r
7245         uint dst = m68ki_read_32(ea);\r
7246         uint res = dst - src;\r
7247 \r
7248         FLAG_N = NFLAG_32(res);\r
7249         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
7250         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
7251         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
7252 \r
7253         m68ki_write_32(ea, FLAG_Z);\r
7254 }\r
7255 \r
7256 \r
7257 void m68k_op_subq_32_ix(void)\r
7258 {\r
7259         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7260         uint ea = EA_AY_IX_32();\r
7261         uint dst = m68ki_read_32(ea);\r
7262         uint res = dst - src;\r
7263 \r
7264         FLAG_N = NFLAG_32(res);\r
7265         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
7266         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
7267         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
7268 \r
7269         m68ki_write_32(ea, FLAG_Z);\r
7270 }\r
7271 \r
7272 \r
7273 void m68k_op_subq_32_aw(void)\r
7274 {\r
7275         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7276         uint ea = EA_AW_32();\r
7277         uint dst = m68ki_read_32(ea);\r
7278         uint res = dst - src;\r
7279 \r
7280         FLAG_N = NFLAG_32(res);\r
7281         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
7282         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
7283         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
7284 \r
7285         m68ki_write_32(ea, FLAG_Z);\r
7286 }\r
7287 \r
7288 \r
7289 void m68k_op_subq_32_al(void)\r
7290 {\r
7291         uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
7292         uint ea = EA_AL_32();\r
7293         uint dst = m68ki_read_32(ea);\r
7294         uint res = dst - src;\r
7295 \r
7296         FLAG_N = NFLAG_32(res);\r
7297         FLAG_Z = MASK_OUT_ABOVE_32(res);\r
7298         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
7299         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
7300 \r
7301         m68ki_write_32(ea, FLAG_Z);\r
7302 }\r
7303 \r
7304 \r
7305 void m68k_op_subx_8_rr(void)\r
7306 {\r
7307         uint* r_dst = &DX;\r
7308         uint src = MASK_OUT_ABOVE_8(DY);\r
7309         uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
7310         uint res = dst - src - XFLAG_AS_1();\r
7311 \r
7312         FLAG_N = NFLAG_8(res);\r
7313         FLAG_X = FLAG_C = CFLAG_8(res);\r
7314         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
7315 \r
7316         res = MASK_OUT_ABOVE_8(res);\r
7317         FLAG_Z |= res;\r
7318 \r
7319         *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
7320 }\r
7321 \r
7322 \r
7323 void m68k_op_subx_16_rr(void)\r
7324 {\r
7325         uint* r_dst = &DX;\r
7326         uint src = MASK_OUT_ABOVE_16(DY);\r
7327         uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
7328         uint res = dst - src - XFLAG_AS_1();\r
7329 \r
7330         FLAG_N = NFLAG_16(res);\r
7331         FLAG_X = FLAG_C = CFLAG_16(res);\r
7332         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
7333 \r
7334         res = MASK_OUT_ABOVE_16(res);\r
7335         FLAG_Z |= res;\r
7336 \r
7337         *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
7338 }\r
7339 \r
7340 \r
7341 void m68k_op_subx_32_rr(void)\r
7342 {\r
7343         uint* r_dst = &DX;\r
7344         uint src = DY;\r
7345         uint dst = *r_dst;\r
7346         uint res = dst - src - XFLAG_AS_1();\r
7347 \r
7348         FLAG_N = NFLAG_32(res);\r
7349         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
7350         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
7351 \r
7352         res = MASK_OUT_ABOVE_32(res);\r
7353         FLAG_Z |= res;\r
7354 \r
7355         *r_dst = res;\r
7356 }\r
7357 \r
7358 \r
7359 void m68k_op_subx_8_mm_ax7(void)\r
7360 {\r
7361         uint src = OPER_AY_PD_8();\r
7362         uint ea  = EA_A7_PD_8();\r
7363         uint dst = m68ki_read_8(ea);\r
7364         uint res = dst - src - XFLAG_AS_1();\r
7365 \r
7366         FLAG_N = NFLAG_8(res);\r
7367         FLAG_X = FLAG_C = CFLAG_8(res);\r
7368         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
7369 \r
7370         res = MASK_OUT_ABOVE_8(res);\r
7371         FLAG_Z |= res;\r
7372 \r
7373         m68ki_write_8(ea, res);\r
7374 }\r
7375 \r
7376 \r
7377 void m68k_op_subx_8_mm_ay7(void)\r
7378 {\r
7379         uint src = OPER_A7_PD_8();\r
7380         uint ea  = EA_AX_PD_8();\r
7381         uint dst = m68ki_read_8(ea);\r
7382         uint res = dst - src - XFLAG_AS_1();\r
7383 \r
7384         FLAG_N = NFLAG_8(res);\r
7385         FLAG_X = FLAG_C = CFLAG_8(res);\r
7386         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
7387 \r
7388         res = MASK_OUT_ABOVE_8(res);\r
7389         FLAG_Z |= res;\r
7390 \r
7391         m68ki_write_8(ea, res);\r
7392 }\r
7393 \r
7394 \r
7395 void m68k_op_subx_8_mm_axy7(void)\r
7396 {\r
7397         uint src = OPER_A7_PD_8();\r
7398         uint ea  = EA_A7_PD_8();\r
7399         uint dst = m68ki_read_8(ea);\r
7400         uint res = dst - src - XFLAG_AS_1();\r
7401 \r
7402         FLAG_N = NFLAG_8(res);\r
7403         FLAG_X = FLAG_C = CFLAG_8(res);\r
7404         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
7405 \r
7406         res = MASK_OUT_ABOVE_8(res);\r
7407         FLAG_Z |= res;\r
7408 \r
7409         m68ki_write_8(ea, res);\r
7410 }\r
7411 \r
7412 \r
7413 void m68k_op_subx_8_mm(void)\r
7414 {\r
7415         uint src = OPER_AY_PD_8();\r
7416         uint ea  = EA_AX_PD_8();\r
7417         uint dst = m68ki_read_8(ea);\r
7418         uint res = dst - src - XFLAG_AS_1();\r
7419 \r
7420         FLAG_N = NFLAG_8(res);\r
7421         FLAG_X = FLAG_C = CFLAG_8(res);\r
7422         FLAG_V = VFLAG_SUB_8(src, dst, res);\r
7423 \r
7424         res = MASK_OUT_ABOVE_8(res);\r
7425         FLAG_Z |= res;\r
7426 \r
7427         m68ki_write_8(ea, res);\r
7428 }\r
7429 \r
7430 \r
7431 void m68k_op_subx_16_mm(void)\r
7432 {\r
7433         uint src = OPER_AY_PD_16();\r
7434         uint ea  = EA_AX_PD_16();\r
7435         uint dst = m68ki_read_16(ea);\r
7436         uint res = dst - src - XFLAG_AS_1();\r
7437 \r
7438         FLAG_N = NFLAG_16(res);\r
7439         FLAG_X = FLAG_C = CFLAG_16(res);\r
7440         FLAG_V = VFLAG_SUB_16(src, dst, res);\r
7441 \r
7442         res = MASK_OUT_ABOVE_16(res);\r
7443         FLAG_Z |= res;\r
7444 \r
7445         m68ki_write_16(ea, res);\r
7446 }\r
7447 \r
7448 \r
7449 void m68k_op_subx_32_mm(void)\r
7450 {\r
7451         uint src = OPER_AY_PD_32();\r
7452         uint ea  = EA_AX_PD_32();\r
7453         uint dst = m68ki_read_32(ea);\r
7454         uint res = dst - src - XFLAG_AS_1();\r
7455 \r
7456         FLAG_N = NFLAG_32(res);\r
7457         FLAG_X = FLAG_C = CFLAG_SUB_32(src, dst, res);\r
7458         FLAG_V = VFLAG_SUB_32(src, dst, res);\r
7459 \r
7460         res = MASK_OUT_ABOVE_32(res);\r
7461         FLAG_Z |= res;\r
7462 \r
7463         m68ki_write_32(ea, res);\r
7464 }\r
7465 \r
7466 \r
7467 void m68k_op_swap_32(void)\r
7468 {\r
7469         uint* r_dst = &DY;\r
7470 \r
7471         FLAG_Z = MASK_OUT_ABOVE_32(*r_dst<<16);\r
7472         *r_dst = (*r_dst>>16) | FLAG_Z;\r
7473 \r
7474         FLAG_Z = *r_dst;\r
7475         FLAG_N = NFLAG_32(*r_dst);\r
7476         FLAG_C = CFLAG_CLEAR;\r
7477         FLAG_V = VFLAG_CLEAR;\r
7478 }\r
7479 \r
7480 \r
7481 void m68k_op_tas_8_d(void)\r
7482 {\r
7483         uint* r_dst = &DY;\r
7484 \r
7485         FLAG_Z = MASK_OUT_ABOVE_8(*r_dst);\r
7486         FLAG_N = NFLAG_8(*r_dst);\r
7487         FLAG_V = VFLAG_CLEAR;\r
7488         FLAG_C = CFLAG_CLEAR;\r
7489         *r_dst |= 0x80;\r
7490 }\r
7491 \r
7492 \r
7493 void m68k_op_tas_8_ai(void)\r
7494 {\r
7495         uint ea = EA_AY_AI_8();\r
7496         uint dst = m68ki_read_8(ea);\r
7497 \r
7498         FLAG_Z = dst;\r
7499         FLAG_N = NFLAG_8(dst);\r
7500         FLAG_V = VFLAG_CLEAR;\r
7501         FLAG_C = CFLAG_CLEAR;\r
7502 //      m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem\r
7503 }\r
7504 \r
7505 \r
7506 void m68k_op_tas_8_pi(void)\r
7507 {\r
7508         uint ea = EA_AY_PI_8();\r
7509         uint dst = m68ki_read_8(ea);\r
7510 \r
7511         FLAG_Z = dst;\r
7512         FLAG_N = NFLAG_8(dst);\r
7513         FLAG_V = VFLAG_CLEAR;\r
7514         FLAG_C = CFLAG_CLEAR;\r
7515 //      m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem\r
7516 }\r
7517 \r
7518 \r
7519 void m68k_op_tas_8_pi7(void)\r
7520 {\r
7521         uint ea = EA_A7_PI_8();\r
7522         uint dst = m68ki_read_8(ea);\r
7523 \r
7524         FLAG_Z = dst;\r
7525         FLAG_N = NFLAG_8(dst);\r
7526         FLAG_V = VFLAG_CLEAR;\r
7527         FLAG_C = CFLAG_CLEAR;\r
7528 //      m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem\r
7529 }\r
7530 \r
7531 \r
7532 void m68k_op_tas_8_pd(void)\r
7533 {\r
7534         uint ea = EA_AY_PD_8();\r
7535         uint dst = m68ki_read_8(ea);\r
7536 \r
7537         FLAG_Z = dst;\r
7538         FLAG_N = NFLAG_8(dst);\r
7539         FLAG_V = VFLAG_CLEAR;\r
7540         FLAG_C = CFLAG_CLEAR;\r
7541 //      m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem\r
7542 }\r
7543 \r
7544 \r
7545 void m68k_op_tas_8_pd7(void)\r
7546 {\r
7547         uint ea = EA_A7_PD_8();\r
7548         uint dst = m68ki_read_8(ea);\r
7549 \r
7550         FLAG_Z = dst;\r
7551         FLAG_N = NFLAG_8(dst);\r
7552         FLAG_V = VFLAG_CLEAR;\r
7553         FLAG_C = CFLAG_CLEAR;\r
7554 //      m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem\r
7555 }\r
7556 \r
7557 \r
7558 void m68k_op_tas_8_di(void)\r
7559 {\r
7560         uint ea = EA_AY_DI_8();\r
7561         uint dst = m68ki_read_8(ea);\r
7562 \r
7563         FLAG_Z = dst;\r
7564         FLAG_N = NFLAG_8(dst);\r
7565         FLAG_V = VFLAG_CLEAR;\r
7566         FLAG_C = CFLAG_CLEAR;\r
7567 //      m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem\r
7568 }\r
7569 \r
7570 \r
7571 void m68k_op_tas_8_ix(void)\r
7572 {\r
7573         uint ea = EA_AY_IX_8();\r
7574         uint dst = m68ki_read_8(ea);\r
7575 \r
7576         FLAG_Z = dst;\r
7577         FLAG_N = NFLAG_8(dst);\r
7578         FLAG_V = VFLAG_CLEAR;\r
7579         FLAG_C = CFLAG_CLEAR;\r
7580 //      m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem\r
7581 }\r
7582 \r
7583 \r
7584 void m68k_op_tas_8_aw(void)\r
7585 {\r
7586         uint ea = EA_AW_8();\r
7587         uint dst = m68ki_read_8(ea);\r
7588 \r
7589         FLAG_Z = dst;\r
7590         FLAG_N = NFLAG_8(dst);\r
7591         FLAG_V = VFLAG_CLEAR;\r
7592         FLAG_C = CFLAG_CLEAR;\r
7593 //      m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem\r
7594 }\r
7595 \r
7596 \r
7597 void m68k_op_tas_8_al(void)\r
7598 {\r
7599         uint ea = EA_AL_8();\r
7600         uint dst = m68ki_read_8(ea);\r
7601 \r
7602         FLAG_Z = dst;\r
7603         FLAG_N = NFLAG_8(dst);\r
7604         FLAG_V = VFLAG_CLEAR;\r
7605         FLAG_C = CFLAG_CLEAR;\r
7606 //      m68ki_write_8(ea, dst | 0x80); // notaz: genesis, but only to mem\r
7607 }\r
7608 \r
7609 \r
7610 void m68k_op_trap(void)\r
7611 {\r
7612         /* Trap#n stacks exception frame type 0 */\r
7613         m68ki_exception_trapN(EXCEPTION_TRAP_BASE + (REG_IR & 0xf));    /* HJB 990403 */\r
7614 }\r
7615 \r
7616 \r
7617 void m68k_op_trapt(void)\r
7618 {\r
7619         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7620         {\r
7621                 m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7622                 return;\r
7623         }\r
7624         m68ki_exception_illegal();\r
7625 }\r
7626 \r
7627 \r
7628 void m68k_op_trapt_16(void)\r
7629 {\r
7630         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7631         {\r
7632                 m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7633                 return;\r
7634         }\r
7635         m68ki_exception_illegal();\r
7636 }\r
7637 \r
7638 \r
7639 void m68k_op_trapt_32(void)\r
7640 {\r
7641         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7642         {\r
7643                 m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7644                 return;\r
7645         }\r
7646         m68ki_exception_illegal();\r
7647 }\r
7648 \r
7649 \r
7650 void m68k_op_trapf(void)\r
7651 {\r
7652         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7653         {\r
7654                 return;\r
7655         }\r
7656         m68ki_exception_illegal();\r
7657 }\r
7658 \r
7659 \r
7660 void m68k_op_trapf_16(void)\r
7661 {\r
7662         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7663         {\r
7664                 REG_PC += 2;\r
7665                 return;\r
7666         }\r
7667         m68ki_exception_illegal();\r
7668 }\r
7669 \r
7670 \r
7671 void m68k_op_trapf_32(void)\r
7672 {\r
7673         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7674         {\r
7675                 REG_PC += 4;\r
7676                 return;\r
7677         }\r
7678         m68ki_exception_illegal();\r
7679 }\r
7680 \r
7681 \r
7682 void m68k_op_traphi(void)\r
7683 {\r
7684         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7685         {\r
7686                 if(COND_HI())\r
7687                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7688                 return;\r
7689         }\r
7690         m68ki_exception_illegal();\r
7691 }\r
7692 \r
7693 \r
7694 void m68k_op_trapls(void)\r
7695 {\r
7696         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7697         {\r
7698                 if(COND_LS())\r
7699                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7700                 return;\r
7701         }\r
7702         m68ki_exception_illegal();\r
7703 }\r
7704 \r
7705 \r
7706 void m68k_op_trapcc(void)\r
7707 {\r
7708         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7709         {\r
7710                 if(COND_CC())\r
7711                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7712                 return;\r
7713         }\r
7714         m68ki_exception_illegal();\r
7715 }\r
7716 \r
7717 \r
7718 void m68k_op_trapcs(void)\r
7719 {\r
7720         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7721         {\r
7722                 if(COND_CS())\r
7723                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7724                 return;\r
7725         }\r
7726         m68ki_exception_illegal();\r
7727 }\r
7728 \r
7729 \r
7730 void m68k_op_trapne(void)\r
7731 {\r
7732         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7733         {\r
7734                 if(COND_NE())\r
7735                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7736                 return;\r
7737         }\r
7738         m68ki_exception_illegal();\r
7739 }\r
7740 \r
7741 \r
7742 void m68k_op_trapeq(void)\r
7743 {\r
7744         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7745         {\r
7746                 if(COND_EQ())\r
7747                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7748                 return;\r
7749         }\r
7750         m68ki_exception_illegal();\r
7751 }\r
7752 \r
7753 \r
7754 void m68k_op_trapvc(void)\r
7755 {\r
7756         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7757         {\r
7758                 if(COND_VC())\r
7759                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7760                 return;\r
7761         }\r
7762         m68ki_exception_illegal();\r
7763 }\r
7764 \r
7765 \r
7766 void m68k_op_trapvs(void)\r
7767 {\r
7768         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7769         {\r
7770                 if(COND_VS())\r
7771                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7772                 return;\r
7773         }\r
7774         m68ki_exception_illegal();\r
7775 }\r
7776 \r
7777 \r
7778 void m68k_op_trappl(void)\r
7779 {\r
7780         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7781         {\r
7782                 if(COND_PL())\r
7783                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7784                 return;\r
7785         }\r
7786         m68ki_exception_illegal();\r
7787 }\r
7788 \r
7789 \r
7790 void m68k_op_trapmi(void)\r
7791 {\r
7792         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7793         {\r
7794                 if(COND_MI())\r
7795                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7796                 return;\r
7797         }\r
7798         m68ki_exception_illegal();\r
7799 }\r
7800 \r
7801 \r
7802 void m68k_op_trapge(void)\r
7803 {\r
7804         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7805         {\r
7806                 if(COND_GE())\r
7807                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7808                 return;\r
7809         }\r
7810         m68ki_exception_illegal();\r
7811 }\r
7812 \r
7813 \r
7814 void m68k_op_traplt(void)\r
7815 {\r
7816         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7817         {\r
7818                 if(COND_LT())\r
7819                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7820                 return;\r
7821         }\r
7822         m68ki_exception_illegal();\r
7823 }\r
7824 \r
7825 \r
7826 void m68k_op_trapgt(void)\r
7827 {\r
7828         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7829         {\r
7830                 if(COND_GT())\r
7831                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7832                 return;\r
7833         }\r
7834         m68ki_exception_illegal();\r
7835 }\r
7836 \r
7837 \r
7838 void m68k_op_traple(void)\r
7839 {\r
7840         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7841         {\r
7842                 if(COND_LE())\r
7843                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7844                 return;\r
7845         }\r
7846         m68ki_exception_illegal();\r
7847 }\r
7848 \r
7849 \r
7850 void m68k_op_traphi_16(void)\r
7851 {\r
7852         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7853         {\r
7854                 if(COND_HI())\r
7855                 {\r
7856                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7857                         return;\r
7858                 }\r
7859                 REG_PC += 2;\r
7860                 return;\r
7861         }\r
7862         m68ki_exception_illegal();\r
7863 }\r
7864 \r
7865 \r
7866 void m68k_op_trapls_16(void)\r
7867 {\r
7868         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7869         {\r
7870                 if(COND_LS())\r
7871                 {\r
7872                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7873                         return;\r
7874                 }\r
7875                 REG_PC += 2;\r
7876                 return;\r
7877         }\r
7878         m68ki_exception_illegal();\r
7879 }\r
7880 \r
7881 \r
7882 void m68k_op_trapcc_16(void)\r
7883 {\r
7884         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7885         {\r
7886                 if(COND_CC())\r
7887                 {\r
7888                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7889                         return;\r
7890                 }\r
7891                 REG_PC += 2;\r
7892                 return;\r
7893         }\r
7894         m68ki_exception_illegal();\r
7895 }\r
7896 \r
7897 \r
7898 void m68k_op_trapcs_16(void)\r
7899 {\r
7900         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7901         {\r
7902                 if(COND_CS())\r
7903                 {\r
7904                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7905                         return;\r
7906                 }\r
7907                 REG_PC += 2;\r
7908                 return;\r
7909         }\r
7910         m68ki_exception_illegal();\r
7911 }\r
7912 \r
7913 \r
7914 void m68k_op_trapne_16(void)\r
7915 {\r
7916         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7917         {\r
7918                 if(COND_NE())\r
7919                 {\r
7920                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7921                         return;\r
7922                 }\r
7923                 REG_PC += 2;\r
7924                 return;\r
7925         }\r
7926         m68ki_exception_illegal();\r
7927 }\r
7928 \r
7929 \r
7930 void m68k_op_trapeq_16(void)\r
7931 {\r
7932         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7933         {\r
7934                 if(COND_EQ())\r
7935                 {\r
7936                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7937                         return;\r
7938                 }\r
7939                 REG_PC += 2;\r
7940                 return;\r
7941         }\r
7942         m68ki_exception_illegal();\r
7943 }\r
7944 \r
7945 \r
7946 void m68k_op_trapvc_16(void)\r
7947 {\r
7948         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7949         {\r
7950                 if(COND_VC())\r
7951                 {\r
7952                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7953                         return;\r
7954                 }\r
7955                 REG_PC += 2;\r
7956                 return;\r
7957         }\r
7958         m68ki_exception_illegal();\r
7959 }\r
7960 \r
7961 \r
7962 void m68k_op_trapvs_16(void)\r
7963 {\r
7964         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7965         {\r
7966                 if(COND_VS())\r
7967                 {\r
7968                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7969                         return;\r
7970                 }\r
7971                 REG_PC += 2;\r
7972                 return;\r
7973         }\r
7974         m68ki_exception_illegal();\r
7975 }\r
7976 \r
7977 \r
7978 void m68k_op_trappl_16(void)\r
7979 {\r
7980         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7981         {\r
7982                 if(COND_PL())\r
7983                 {\r
7984                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
7985                         return;\r
7986                 }\r
7987                 REG_PC += 2;\r
7988                 return;\r
7989         }\r
7990         m68ki_exception_illegal();\r
7991 }\r
7992 \r
7993 \r
7994 void m68k_op_trapmi_16(void)\r
7995 {\r
7996         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
7997         {\r
7998                 if(COND_MI())\r
7999                 {\r
8000                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8001                         return;\r
8002                 }\r
8003                 REG_PC += 2;\r
8004                 return;\r
8005         }\r
8006         m68ki_exception_illegal();\r
8007 }\r
8008 \r
8009 \r
8010 void m68k_op_trapge_16(void)\r
8011 {\r
8012         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8013         {\r
8014                 if(COND_GE())\r
8015                 {\r
8016                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8017                         return;\r
8018                 }\r
8019                 REG_PC += 2;\r
8020                 return;\r
8021         }\r
8022         m68ki_exception_illegal();\r
8023 }\r
8024 \r
8025 \r
8026 void m68k_op_traplt_16(void)\r
8027 {\r
8028         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8029         {\r
8030                 if(COND_LT())\r
8031                 {\r
8032                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8033                         return;\r
8034                 }\r
8035                 REG_PC += 2;\r
8036                 return;\r
8037         }\r
8038         m68ki_exception_illegal();\r
8039 }\r
8040 \r
8041 \r
8042 void m68k_op_trapgt_16(void)\r
8043 {\r
8044         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8045         {\r
8046                 if(COND_GT())\r
8047                 {\r
8048                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8049                         return;\r
8050                 }\r
8051                 REG_PC += 2;\r
8052                 return;\r
8053         }\r
8054         m68ki_exception_illegal();\r
8055 }\r
8056 \r
8057 \r
8058 void m68k_op_traple_16(void)\r
8059 {\r
8060         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8061         {\r
8062                 if(COND_LE())\r
8063                 {\r
8064                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8065                         return;\r
8066                 }\r
8067                 REG_PC += 2;\r
8068                 return;\r
8069         }\r
8070         m68ki_exception_illegal();\r
8071 }\r
8072 \r
8073 \r
8074 void m68k_op_traphi_32(void)\r
8075 {\r
8076         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8077         {\r
8078                 if(COND_HI())\r
8079                 {\r
8080                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8081                         return;\r
8082                 }\r
8083                 REG_PC += 4;\r
8084                 return;\r
8085         }\r
8086         m68ki_exception_illegal();\r
8087 }\r
8088 \r
8089 \r
8090 void m68k_op_trapls_32(void)\r
8091 {\r
8092         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8093         {\r
8094                 if(COND_LS())\r
8095                 {\r
8096                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8097                         return;\r
8098                 }\r
8099                 REG_PC += 4;\r
8100                 return;\r
8101         }\r
8102         m68ki_exception_illegal();\r
8103 }\r
8104 \r
8105 \r
8106 void m68k_op_trapcc_32(void)\r
8107 {\r
8108         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8109         {\r
8110                 if(COND_CC())\r
8111                 {\r
8112                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8113                         return;\r
8114                 }\r
8115                 REG_PC += 4;\r
8116                 return;\r
8117         }\r
8118         m68ki_exception_illegal();\r
8119 }\r
8120 \r
8121 \r
8122 void m68k_op_trapcs_32(void)\r
8123 {\r
8124         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8125         {\r
8126                 if(COND_CS())\r
8127                 {\r
8128                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8129                         return;\r
8130                 }\r
8131                 REG_PC += 4;\r
8132                 return;\r
8133         }\r
8134         m68ki_exception_illegal();\r
8135 }\r
8136 \r
8137 \r
8138 void m68k_op_trapne_32(void)\r
8139 {\r
8140         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8141         {\r
8142                 if(COND_NE())\r
8143                 {\r
8144                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8145                         return;\r
8146                 }\r
8147                 REG_PC += 4;\r
8148                 return;\r
8149         }\r
8150         m68ki_exception_illegal();\r
8151 }\r
8152 \r
8153 \r
8154 void m68k_op_trapeq_32(void)\r
8155 {\r
8156         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8157         {\r
8158                 if(COND_EQ())\r
8159                 {\r
8160                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8161                         return;\r
8162                 }\r
8163                 REG_PC += 4;\r
8164                 return;\r
8165         }\r
8166         m68ki_exception_illegal();\r
8167 }\r
8168 \r
8169 \r
8170 void m68k_op_trapvc_32(void)\r
8171 {\r
8172         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8173         {\r
8174                 if(COND_VC())\r
8175                 {\r
8176                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8177                         return;\r
8178                 }\r
8179                 REG_PC += 4;\r
8180                 return;\r
8181         }\r
8182         m68ki_exception_illegal();\r
8183 }\r
8184 \r
8185 \r
8186 void m68k_op_trapvs_32(void)\r
8187 {\r
8188         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8189         {\r
8190                 if(COND_VS())\r
8191                 {\r
8192                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8193                         return;\r
8194                 }\r
8195                 REG_PC += 4;\r
8196                 return;\r
8197         }\r
8198         m68ki_exception_illegal();\r
8199 }\r
8200 \r
8201 \r
8202 void m68k_op_trappl_32(void)\r
8203 {\r
8204         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8205         {\r
8206                 if(COND_PL())\r
8207                 {\r
8208                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8209                         return;\r
8210                 }\r
8211                 REG_PC += 4;\r
8212                 return;\r
8213         }\r
8214         m68ki_exception_illegal();\r
8215 }\r
8216 \r
8217 \r
8218 void m68k_op_trapmi_32(void)\r
8219 {\r
8220         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8221         {\r
8222                 if(COND_MI())\r
8223                 {\r
8224                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8225                         return;\r
8226                 }\r
8227                 REG_PC += 4;\r
8228                 return;\r
8229         }\r
8230         m68ki_exception_illegal();\r
8231 }\r
8232 \r
8233 \r
8234 void m68k_op_trapge_32(void)\r
8235 {\r
8236         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8237         {\r
8238                 if(COND_GE())\r
8239                 {\r
8240                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8241                         return;\r
8242                 }\r
8243                 REG_PC += 4;\r
8244                 return;\r
8245         }\r
8246         m68ki_exception_illegal();\r
8247 }\r
8248 \r
8249 \r
8250 void m68k_op_traplt_32(void)\r
8251 {\r
8252         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8253         {\r
8254                 if(COND_LT())\r
8255                 {\r
8256                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8257                         return;\r
8258                 }\r
8259                 REG_PC += 4;\r
8260                 return;\r
8261         }\r
8262         m68ki_exception_illegal();\r
8263 }\r
8264 \r
8265 \r
8266 void m68k_op_trapgt_32(void)\r
8267 {\r
8268         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8269         {\r
8270                 if(COND_GT())\r
8271                 {\r
8272                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8273                         return;\r
8274                 }\r
8275                 REG_PC += 4;\r
8276                 return;\r
8277         }\r
8278         m68ki_exception_illegal();\r
8279 }\r
8280 \r
8281 \r
8282 void m68k_op_traple_32(void)\r
8283 {\r
8284         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8285         {\r
8286                 if(COND_LE())\r
8287                 {\r
8288                         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8289                         return;\r
8290                 }\r
8291                 REG_PC += 4;\r
8292                 return;\r
8293         }\r
8294         m68ki_exception_illegal();\r
8295 }\r
8296 \r
8297 \r
8298 void m68k_op_trapv(void)\r
8299 {\r
8300         if(COND_VC())\r
8301         {\r
8302                 return;\r
8303         }\r
8304         m68ki_exception_trap(EXCEPTION_TRAPV);  /* HJB 990403 */\r
8305 }\r
8306 \r
8307 \r
8308 void m68k_op_tst_8_d(void)\r
8309 {\r
8310         uint res = MASK_OUT_ABOVE_8(DY);\r
8311 \r
8312         FLAG_N = NFLAG_8(res);\r
8313         FLAG_Z = res;\r
8314         FLAG_V = VFLAG_CLEAR;\r
8315         FLAG_C = CFLAG_CLEAR;\r
8316 }\r
8317 \r
8318 \r
8319 void m68k_op_tst_8_ai(void)\r
8320 {\r
8321         uint res = OPER_AY_AI_8();\r
8322 \r
8323         FLAG_N = NFLAG_8(res);\r
8324         FLAG_Z = res;\r
8325         FLAG_V = VFLAG_CLEAR;\r
8326         FLAG_C = CFLAG_CLEAR;\r
8327 }\r
8328 \r
8329 \r
8330 void m68k_op_tst_8_pi(void)\r
8331 {\r
8332         uint res = OPER_AY_PI_8();\r
8333 \r
8334         FLAG_N = NFLAG_8(res);\r
8335         FLAG_Z = res;\r
8336         FLAG_V = VFLAG_CLEAR;\r
8337         FLAG_C = CFLAG_CLEAR;\r
8338 }\r
8339 \r
8340 \r
8341 void m68k_op_tst_8_pi7(void)\r
8342 {\r
8343         uint res = OPER_A7_PI_8();\r
8344 \r
8345         FLAG_N = NFLAG_8(res);\r
8346         FLAG_Z = res;\r
8347         FLAG_V = VFLAG_CLEAR;\r
8348         FLAG_C = CFLAG_CLEAR;\r
8349 }\r
8350 \r
8351 \r
8352 void m68k_op_tst_8_pd(void)\r
8353 {\r
8354         uint res = OPER_AY_PD_8();\r
8355 \r
8356         FLAG_N = NFLAG_8(res);\r
8357         FLAG_Z = res;\r
8358         FLAG_V = VFLAG_CLEAR;\r
8359         FLAG_C = CFLAG_CLEAR;\r
8360 }\r
8361 \r
8362 \r
8363 void m68k_op_tst_8_pd7(void)\r
8364 {\r
8365         uint res = OPER_A7_PD_8();\r
8366 \r
8367         FLAG_N = NFLAG_8(res);\r
8368         FLAG_Z = res;\r
8369         FLAG_V = VFLAG_CLEAR;\r
8370         FLAG_C = CFLAG_CLEAR;\r
8371 }\r
8372 \r
8373 \r
8374 void m68k_op_tst_8_di(void)\r
8375 {\r
8376         uint res = OPER_AY_DI_8();\r
8377 \r
8378         FLAG_N = NFLAG_8(res);\r
8379         FLAG_Z = res;\r
8380         FLAG_V = VFLAG_CLEAR;\r
8381         FLAG_C = CFLAG_CLEAR;\r
8382 }\r
8383 \r
8384 \r
8385 void m68k_op_tst_8_ix(void)\r
8386 {\r
8387         uint res = OPER_AY_IX_8();\r
8388 \r
8389         FLAG_N = NFLAG_8(res);\r
8390         FLAG_Z = res;\r
8391         FLAG_V = VFLAG_CLEAR;\r
8392         FLAG_C = CFLAG_CLEAR;\r
8393 }\r
8394 \r
8395 \r
8396 void m68k_op_tst_8_aw(void)\r
8397 {\r
8398         uint res = OPER_AW_8();\r
8399 \r
8400         FLAG_N = NFLAG_8(res);\r
8401         FLAG_Z = res;\r
8402         FLAG_V = VFLAG_CLEAR;\r
8403         FLAG_C = CFLAG_CLEAR;\r
8404 }\r
8405 \r
8406 \r
8407 void m68k_op_tst_8_al(void)\r
8408 {\r
8409         uint res = OPER_AL_8();\r
8410 \r
8411         FLAG_N = NFLAG_8(res);\r
8412         FLAG_Z = res;\r
8413         FLAG_V = VFLAG_CLEAR;\r
8414         FLAG_C = CFLAG_CLEAR;\r
8415 }\r
8416 \r
8417 \r
8418 void m68k_op_tst_8_pcdi(void)\r
8419 {\r
8420         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8421         {\r
8422                 uint res = OPER_PCDI_8();\r
8423 \r
8424                 FLAG_N = NFLAG_8(res);\r
8425                 FLAG_Z = res;\r
8426                 FLAG_V = VFLAG_CLEAR;\r
8427                 FLAG_C = CFLAG_CLEAR;\r
8428                 return;\r
8429         }\r
8430         m68ki_exception_illegal();\r
8431 }\r
8432 \r
8433 \r
8434 void m68k_op_tst_8_pcix(void)\r
8435 {\r
8436         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8437         {\r
8438                 uint res = OPER_PCIX_8();\r
8439 \r
8440                 FLAG_N = NFLAG_8(res);\r
8441                 FLAG_Z = res;\r
8442                 FLAG_V = VFLAG_CLEAR;\r
8443                 FLAG_C = CFLAG_CLEAR;\r
8444                 return;\r
8445         }\r
8446         m68ki_exception_illegal();\r
8447 }\r
8448 \r
8449 \r
8450 void m68k_op_tst_8_i(void)\r
8451 {\r
8452         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8453         {\r
8454                 uint res = OPER_I_8();\r
8455 \r
8456                 FLAG_N = NFLAG_8(res);\r
8457                 FLAG_Z = res;\r
8458                 FLAG_V = VFLAG_CLEAR;\r
8459                 FLAG_C = CFLAG_CLEAR;\r
8460                 return;\r
8461         }\r
8462         m68ki_exception_illegal();\r
8463 }\r
8464 \r
8465 \r
8466 void m68k_op_tst_16_d(void)\r
8467 {\r
8468         uint res = MASK_OUT_ABOVE_16(DY);\r
8469 \r
8470         FLAG_N = NFLAG_16(res);\r
8471         FLAG_Z = res;\r
8472         FLAG_V = VFLAG_CLEAR;\r
8473         FLAG_C = CFLAG_CLEAR;\r
8474 }\r
8475 \r
8476 \r
8477 void m68k_op_tst_16_a(void)\r
8478 {\r
8479         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8480         {\r
8481                 uint res = MAKE_INT_16(AY);\r
8482 \r
8483                 FLAG_N = NFLAG_16(res);\r
8484                 FLAG_Z = res;\r
8485                 FLAG_V = VFLAG_CLEAR;\r
8486                 FLAG_C = CFLAG_CLEAR;\r
8487                 return;\r
8488         }\r
8489         m68ki_exception_illegal();\r
8490 }\r
8491 \r
8492 \r
8493 void m68k_op_tst_16_ai(void)\r
8494 {\r
8495         uint res = OPER_AY_AI_16();\r
8496 \r
8497         FLAG_N = NFLAG_16(res);\r
8498         FLAG_Z = res;\r
8499         FLAG_V = VFLAG_CLEAR;\r
8500         FLAG_C = CFLAG_CLEAR;\r
8501 }\r
8502 \r
8503 \r
8504 void m68k_op_tst_16_pi(void)\r
8505 {\r
8506         uint res = OPER_AY_PI_16();\r
8507 \r
8508         FLAG_N = NFLAG_16(res);\r
8509         FLAG_Z = res;\r
8510         FLAG_V = VFLAG_CLEAR;\r
8511         FLAG_C = CFLAG_CLEAR;\r
8512 }\r
8513 \r
8514 \r
8515 void m68k_op_tst_16_pd(void)\r
8516 {\r
8517         uint res = OPER_AY_PD_16();\r
8518 \r
8519         FLAG_N = NFLAG_16(res);\r
8520         FLAG_Z = res;\r
8521         FLAG_V = VFLAG_CLEAR;\r
8522         FLAG_C = CFLAG_CLEAR;\r
8523 }\r
8524 \r
8525 \r
8526 void m68k_op_tst_16_di(void)\r
8527 {\r
8528         uint res = OPER_AY_DI_16();\r
8529 \r
8530         FLAG_N = NFLAG_16(res);\r
8531         FLAG_Z = res;\r
8532         FLAG_V = VFLAG_CLEAR;\r
8533         FLAG_C = CFLAG_CLEAR;\r
8534 }\r
8535 \r
8536 \r
8537 void m68k_op_tst_16_ix(void)\r
8538 {\r
8539         uint res = OPER_AY_IX_16();\r
8540 \r
8541         FLAG_N = NFLAG_16(res);\r
8542         FLAG_Z = res;\r
8543         FLAG_V = VFLAG_CLEAR;\r
8544         FLAG_C = CFLAG_CLEAR;\r
8545 }\r
8546 \r
8547 \r
8548 void m68k_op_tst_16_aw(void)\r
8549 {\r
8550         uint res = OPER_AW_16();\r
8551 \r
8552         FLAG_N = NFLAG_16(res);\r
8553         FLAG_Z = res;\r
8554         FLAG_V = VFLAG_CLEAR;\r
8555         FLAG_C = CFLAG_CLEAR;\r
8556 }\r
8557 \r
8558 \r
8559 void m68k_op_tst_16_al(void)\r
8560 {\r
8561         uint res = OPER_AL_16();\r
8562 \r
8563         FLAG_N = NFLAG_16(res);\r
8564         FLAG_Z = res;\r
8565         FLAG_V = VFLAG_CLEAR;\r
8566         FLAG_C = CFLAG_CLEAR;\r
8567 }\r
8568 \r
8569 \r
8570 void m68k_op_tst_16_pcdi(void)\r
8571 {\r
8572         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8573         {\r
8574                 uint res = OPER_PCDI_16();\r
8575 \r
8576                 FLAG_N = NFLAG_16(res);\r
8577                 FLAG_Z = res;\r
8578                 FLAG_V = VFLAG_CLEAR;\r
8579                 FLAG_C = CFLAG_CLEAR;\r
8580                 return;\r
8581         }\r
8582         m68ki_exception_illegal();\r
8583 }\r
8584 \r
8585 \r
8586 void m68k_op_tst_16_pcix(void)\r
8587 {\r
8588         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8589         {\r
8590                 uint res = OPER_PCIX_16();\r
8591 \r
8592                 FLAG_N = NFLAG_16(res);\r
8593                 FLAG_Z = res;\r
8594                 FLAG_V = VFLAG_CLEAR;\r
8595                 FLAG_C = CFLAG_CLEAR;\r
8596                 return;\r
8597         }\r
8598         m68ki_exception_illegal();\r
8599 }\r
8600 \r
8601 \r
8602 void m68k_op_tst_16_i(void)\r
8603 {\r
8604         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8605         {\r
8606                 uint res = OPER_I_16();\r
8607 \r
8608                 FLAG_N = NFLAG_16(res);\r
8609                 FLAG_Z = res;\r
8610                 FLAG_V = VFLAG_CLEAR;\r
8611                 FLAG_C = CFLAG_CLEAR;\r
8612                 return;\r
8613         }\r
8614         m68ki_exception_illegal();\r
8615 }\r
8616 \r
8617 \r
8618 void m68k_op_tst_32_d(void)\r
8619 {\r
8620         uint res = DY;\r
8621 \r
8622         FLAG_N = NFLAG_32(res);\r
8623         FLAG_Z = res;\r
8624         FLAG_V = VFLAG_CLEAR;\r
8625         FLAG_C = CFLAG_CLEAR;\r
8626 }\r
8627 \r
8628 \r
8629 void m68k_op_tst_32_a(void)\r
8630 {\r
8631         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8632         {\r
8633                 uint res = AY;\r
8634 \r
8635                 FLAG_N = NFLAG_32(res);\r
8636                 FLAG_Z = res;\r
8637                 FLAG_V = VFLAG_CLEAR;\r
8638                 FLAG_C = CFLAG_CLEAR;\r
8639                 return;\r
8640         }\r
8641         m68ki_exception_illegal();\r
8642 }\r
8643 \r
8644 \r
8645 void m68k_op_tst_32_ai(void)\r
8646 {\r
8647         uint res = OPER_AY_AI_32();\r
8648 \r
8649         FLAG_N = NFLAG_32(res);\r
8650         FLAG_Z = res;\r
8651         FLAG_V = VFLAG_CLEAR;\r
8652         FLAG_C = CFLAG_CLEAR;\r
8653 }\r
8654 \r
8655 \r
8656 void m68k_op_tst_32_pi(void)\r
8657 {\r
8658         uint res = OPER_AY_PI_32();\r
8659 \r
8660         FLAG_N = NFLAG_32(res);\r
8661         FLAG_Z = res;\r
8662         FLAG_V = VFLAG_CLEAR;\r
8663         FLAG_C = CFLAG_CLEAR;\r
8664 }\r
8665 \r
8666 \r
8667 void m68k_op_tst_32_pd(void)\r
8668 {\r
8669         uint res = OPER_AY_PD_32();\r
8670 \r
8671         FLAG_N = NFLAG_32(res);\r
8672         FLAG_Z = res;\r
8673         FLAG_V = VFLAG_CLEAR;\r
8674         FLAG_C = CFLAG_CLEAR;\r
8675 }\r
8676 \r
8677 \r
8678 void m68k_op_tst_32_di(void)\r
8679 {\r
8680         uint res = OPER_AY_DI_32();\r
8681 \r
8682         FLAG_N = NFLAG_32(res);\r
8683         FLAG_Z = res;\r
8684         FLAG_V = VFLAG_CLEAR;\r
8685         FLAG_C = CFLAG_CLEAR;\r
8686 }\r
8687 \r
8688 \r
8689 void m68k_op_tst_32_ix(void)\r
8690 {\r
8691         uint res = OPER_AY_IX_32();\r
8692 \r
8693         FLAG_N = NFLAG_32(res);\r
8694         FLAG_Z = res;\r
8695         FLAG_V = VFLAG_CLEAR;\r
8696         FLAG_C = CFLAG_CLEAR;\r
8697 }\r
8698 \r
8699 \r
8700 void m68k_op_tst_32_aw(void)\r
8701 {\r
8702         uint res = OPER_AW_32();\r
8703 \r
8704         FLAG_N = NFLAG_32(res);\r
8705         FLAG_Z = res;\r
8706         FLAG_V = VFLAG_CLEAR;\r
8707         FLAG_C = CFLAG_CLEAR;\r
8708 }\r
8709 \r
8710 \r
8711 void m68k_op_tst_32_al(void)\r
8712 {\r
8713         uint res = OPER_AL_32();\r
8714 \r
8715         FLAG_N = NFLAG_32(res);\r
8716         FLAG_Z = res;\r
8717         FLAG_V = VFLAG_CLEAR;\r
8718         FLAG_C = CFLAG_CLEAR;\r
8719 }\r
8720 \r
8721 \r
8722 void m68k_op_tst_32_pcdi(void)\r
8723 {\r
8724         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8725         {\r
8726                 uint res = OPER_PCDI_32();\r
8727 \r
8728                 FLAG_N = NFLAG_32(res);\r
8729                 FLAG_Z = res;\r
8730                 FLAG_V = VFLAG_CLEAR;\r
8731                 FLAG_C = CFLAG_CLEAR;\r
8732                 return;\r
8733         }\r
8734         m68ki_exception_illegal();\r
8735 }\r
8736 \r
8737 \r
8738 void m68k_op_tst_32_pcix(void)\r
8739 {\r
8740         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8741         {\r
8742                 uint res = OPER_PCIX_32();\r
8743 \r
8744                 FLAG_N = NFLAG_32(res);\r
8745                 FLAG_Z = res;\r
8746                 FLAG_V = VFLAG_CLEAR;\r
8747                 FLAG_C = CFLAG_CLEAR;\r
8748                 return;\r
8749         }\r
8750         m68ki_exception_illegal();\r
8751 }\r
8752 \r
8753 \r
8754 void m68k_op_tst_32_i(void)\r
8755 {\r
8756         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8757         {\r
8758                 uint res = OPER_I_32();\r
8759 \r
8760                 FLAG_N = NFLAG_32(res);\r
8761                 FLAG_Z = res;\r
8762                 FLAG_V = VFLAG_CLEAR;\r
8763                 FLAG_C = CFLAG_CLEAR;\r
8764                 return;\r
8765         }\r
8766         m68ki_exception_illegal();\r
8767 }\r
8768 \r
8769 \r
8770 void m68k_op_unlk_32_a7(void)\r
8771 {\r
8772         REG_A[7] = m68ki_read_32(REG_A[7]);\r
8773 }\r
8774 \r
8775 \r
8776 void m68k_op_unlk_32(void)\r
8777 {\r
8778         uint* r_dst = &AY;\r
8779 \r
8780         REG_A[7] = *r_dst;\r
8781         *r_dst = m68ki_pull_32();\r
8782 }\r
8783 \r
8784 \r
8785 void m68k_op_unpk_16_rr(void)\r
8786 {\r
8787         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8788         {\r
8789                 /* Note: DX and DY are reversed in Motorola's docs */\r
8790                 uint src = DY;\r
8791                 uint* r_dst = &DX;\r
8792 \r
8793                 *r_dst = MASK_OUT_BELOW_16(*r_dst) | (((((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16()) & 0xffff);\r
8794                 return;\r
8795         }\r
8796         m68ki_exception_illegal();\r
8797 }\r
8798 \r
8799 \r
8800 void m68k_op_unpk_16_mm_ax7(void)\r
8801 {\r
8802         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8803         {\r
8804                 /* Note: AX and AY are reversed in Motorola's docs */\r
8805                 uint src = OPER_AY_PD_8();\r
8806                 uint ea_dst;\r
8807 \r
8808                 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();\r
8809                 ea_dst = EA_A7_PD_8();\r
8810                 m68ki_write_8(ea_dst, (src >> 8) & 0xff);\r
8811                 ea_dst = EA_A7_PD_8();\r
8812                 m68ki_write_8(ea_dst, src & 0xff);\r
8813                 return;\r
8814         }\r
8815         m68ki_exception_illegal();\r
8816 }\r
8817 \r
8818 \r
8819 void m68k_op_unpk_16_mm_ay7(void)\r
8820 {\r
8821         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8822         {\r
8823                 /* Note: AX and AY are reversed in Motorola's docs */\r
8824                 uint src = OPER_A7_PD_8();\r
8825                 uint ea_dst;\r
8826 \r
8827                 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();\r
8828                 ea_dst = EA_AX_PD_8();\r
8829                 m68ki_write_8(ea_dst, (src >> 8) & 0xff);\r
8830                 ea_dst = EA_AX_PD_8();\r
8831                 m68ki_write_8(ea_dst, src & 0xff);\r
8832                 return;\r
8833         }\r
8834         m68ki_exception_illegal();\r
8835 }\r
8836 \r
8837 \r
8838 void m68k_op_unpk_16_mm_axy7(void)\r
8839 {\r
8840         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8841         {\r
8842                 uint src = OPER_A7_PD_8();\r
8843                 uint ea_dst;\r
8844 \r
8845                 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();\r
8846                 ea_dst = EA_A7_PD_8();\r
8847                 m68ki_write_8(ea_dst, (src >> 8) & 0xff);\r
8848                 ea_dst = EA_A7_PD_8();\r
8849                 m68ki_write_8(ea_dst, src & 0xff);\r
8850                 return;\r
8851         }\r
8852         m68ki_exception_illegal();\r
8853 }\r
8854 \r
8855 \r
8856 void m68k_op_unpk_16_mm(void)\r
8857 {\r
8858         if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
8859         {\r
8860                 /* Note: AX and AY are reversed in Motorola's docs */\r
8861                 uint src = OPER_AY_PD_8();\r
8862                 uint ea_dst;\r
8863 \r
8864                 src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16();\r
8865                 ea_dst = EA_AX_PD_8();\r
8866                 m68ki_write_8(ea_dst, (src >> 8) & 0xff);\r
8867                 ea_dst = EA_AX_PD_8();\r
8868                 m68ki_write_8(ea_dst, src & 0xff);\r
8869                 return;\r
8870         }\r
8871         m68ki_exception_illegal();\r
8872 }\r
8873 \r
8874 \r
8875 /* ======================================================================== */\r
8876 /* ============================== END OF FILE ============================= */\r
8877 /* ======================================================================== */\r
8878 \r
8879 \r