|
|
1.1 root 1: #include "config.h"
2: #include "amiga.h"
3: #include "options.h"
4: #include <stdlib.h>
5: #include "memory.h"
6: #include "custom.h"
7: #include "newcpu.h"
8: #include "cputbl.h"
9: void op_3000(UWORD opcode)
10: {
11: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
12: ULONG dstreg = (opcode & 3584) >> 9;
13: {{ WORD src = regs.d[srcreg];
14: { regs.v = regs.c = 0;
15: regs.z = ((WORD)(src)) == 0;
16: regs.n = ((WORD)(src)) < 0;
17: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
18: }}}}
19: void op_3008(UWORD opcode)
20: {
21: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
22: ULONG dstreg = (opcode & 3584) >> 9;
23: {{ WORD src = regs.a[srcreg];
24: { regs.v = regs.c = 0;
25: regs.z = ((WORD)(src)) == 0;
26: regs.n = ((WORD)(src)) < 0;
27: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
28: }}}}
29: void op_3010(UWORD opcode)
30: {
31: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
32: ULONG dstreg = (opcode & 3584) >> 9;
33: {{ CPTR srca = regs.a[srcreg];
34: WORD src = get_word(srca);
35: { regs.v = regs.c = 0;
36: regs.z = ((WORD)(src)) == 0;
37: regs.n = ((WORD)(src)) < 0;
38: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
39: }}}}
40: void op_3018(UWORD opcode)
41: {
42: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
43: ULONG dstreg = (opcode & 3584) >> 9;
44: {{ CPTR srca = regs.a[srcreg];
45: WORD src = get_word(srca);
46: { regs.a[srcreg] += 2;
47: { regs.v = regs.c = 0;
48: regs.z = ((WORD)(src)) == 0;
49: regs.n = ((WORD)(src)) < 0;
50: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
51: }}}}}
52: void op_3020(UWORD opcode)
53: {
54: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
55: ULONG dstreg = (opcode & 3584) >> 9;
56: {{ regs.a[srcreg] -= 2;
57: { CPTR srca = regs.a[srcreg];
58: WORD src = get_word(srca);
59: { regs.v = regs.c = 0;
60: regs.z = ((WORD)(src)) == 0;
61: regs.n = ((WORD)(src)) < 0;
62: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
63: }}}}}
64: void op_3028(UWORD opcode)
65: {
66: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
67: ULONG dstreg = (opcode & 3584) >> 9;
68: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
69: WORD src = get_word(srca);
70: { regs.v = regs.c = 0;
71: regs.z = ((WORD)(src)) == 0;
72: regs.n = ((WORD)(src)) < 0;
73: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
74: }}}}
75: void op_3030(UWORD opcode)
76: {
77: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
78: ULONG dstreg = (opcode & 3584) >> 9;
79: {{ CPTR srca = regs.a[srcreg];
80: UWORD srcdp = nextiword();
81: srca += (LONG)(BYTE)(srcdp & 0xFF);
82: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
83: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
84: srca += srcdpr;
85: { WORD src = get_word(srca);
86: { regs.v = regs.c = 0;
87: regs.z = ((WORD)(src)) == 0;
88: regs.n = ((WORD)(src)) < 0;
89: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
90: }}}}}}
91: void op_3038(UWORD opcode)
92: {
93: ULONG dstreg = (opcode & 3584) >> 9;
94: {{ CPTR srca = (LONG)(WORD)nextiword();
95: WORD src = get_word(srca);
96: { regs.v = regs.c = 0;
97: regs.z = ((WORD)(src)) == 0;
98: regs.n = ((WORD)(src)) < 0;
99: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
100: }}}}
101: void op_3039(UWORD opcode)
102: {
103: ULONG dstreg = (opcode & 3584) >> 9;
104: {{ CPTR srca = nextilong();
105: WORD src = get_word(srca);
106: { regs.v = regs.c = 0;
107: regs.z = ((WORD)(src)) == 0;
108: regs.n = ((WORD)(src)) < 0;
109: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
110: }}}}
111: void op_303a(UWORD opcode)
112: {
113: ULONG dstreg = (opcode & 3584) >> 9;
114: {{ CPTR srca = m68k_getpc();
115: srca += (LONG)(WORD)nextiword();
116: { WORD src = get_word(srca);
117: { regs.v = regs.c = 0;
118: regs.z = ((WORD)(src)) == 0;
119: regs.n = ((WORD)(src)) < 0;
120: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
121: }}}}}
122: void op_303b(UWORD opcode)
123: {
124: ULONG dstreg = (opcode & 3584) >> 9;
125: {{ CPTR srca = m68k_getpc();
126: UWORD srcdp = nextiword();
127: srca += (LONG)(BYTE)(srcdp & 0xFF);
128: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
129: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
130: srca += srcdpr;
131: { WORD src = get_word(srca);
132: { regs.v = regs.c = 0;
133: regs.z = ((WORD)(src)) == 0;
134: regs.n = ((WORD)(src)) < 0;
135: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
136: }}}}}}
137: void op_303c(UWORD opcode)
138: {
139: ULONG dstreg = (opcode & 3584) >> 9;
140: {{ WORD src = nextiword();
141: { regs.v = regs.c = 0;
142: regs.z = ((WORD)(src)) == 0;
143: regs.n = ((WORD)(src)) < 0;
144: regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
145: }}}}
146: void op_3040(UWORD opcode)
147: {
148: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
149: ULONG dstreg = (opcode & 3584) >> 9;
150: {{ WORD src = regs.d[srcreg];
151: { regs.a[dstreg] = (LONG)(WORD)(src);
152: }}}}
153: void op_3048(UWORD opcode)
154: {
155: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
156: ULONG dstreg = (opcode & 3584) >> 9;
157: {{ WORD src = regs.a[srcreg];
158: { regs.a[dstreg] = (LONG)(WORD)(src);
159: }}}}
160: void op_3050(UWORD opcode)
161: {
162: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
163: ULONG dstreg = (opcode & 3584) >> 9;
164: {{ CPTR srca = regs.a[srcreg];
165: WORD src = get_word(srca);
166: { regs.a[dstreg] = (LONG)(WORD)(src);
167: }}}}
168: void op_3058(UWORD opcode)
169: {
170: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
171: ULONG dstreg = (opcode & 3584) >> 9;
172: {{ CPTR srca = regs.a[srcreg];
173: WORD src = get_word(srca);
174: { regs.a[srcreg] += 2;
175: { regs.a[dstreg] = (LONG)(WORD)(src);
176: }}}}}
177: void op_3060(UWORD opcode)
178: {
179: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
180: ULONG dstreg = (opcode & 3584) >> 9;
181: {{ regs.a[srcreg] -= 2;
182: { CPTR srca = regs.a[srcreg];
183: WORD src = get_word(srca);
184: { regs.a[dstreg] = (LONG)(WORD)(src);
185: }}}}}
186: void op_3068(UWORD opcode)
187: {
188: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
189: ULONG dstreg = (opcode & 3584) >> 9;
190: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
191: WORD src = get_word(srca);
192: { regs.a[dstreg] = (LONG)(WORD)(src);
193: }}}}
194: void op_3070(UWORD opcode)
195: {
196: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
197: ULONG dstreg = (opcode & 3584) >> 9;
198: {{ CPTR srca = regs.a[srcreg];
199: UWORD srcdp = nextiword();
200: srca += (LONG)(BYTE)(srcdp & 0xFF);
201: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
202: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
203: srca += srcdpr;
204: { WORD src = get_word(srca);
205: { regs.a[dstreg] = (LONG)(WORD)(src);
206: }}}}}}
207: void op_3078(UWORD opcode)
208: {
209: ULONG dstreg = (opcode & 3584) >> 9;
210: {{ CPTR srca = (LONG)(WORD)nextiword();
211: WORD src = get_word(srca);
212: { regs.a[dstreg] = (LONG)(WORD)(src);
213: }}}}
214: void op_3079(UWORD opcode)
215: {
216: ULONG dstreg = (opcode & 3584) >> 9;
217: {{ CPTR srca = nextilong();
218: WORD src = get_word(srca);
219: { regs.a[dstreg] = (LONG)(WORD)(src);
220: }}}}
221: void op_307a(UWORD opcode)
222: {
223: ULONG dstreg = (opcode & 3584) >> 9;
224: {{ CPTR srca = m68k_getpc();
225: srca += (LONG)(WORD)nextiword();
226: { WORD src = get_word(srca);
227: { regs.a[dstreg] = (LONG)(WORD)(src);
228: }}}}}
229: void op_307b(UWORD opcode)
230: {
231: ULONG dstreg = (opcode & 3584) >> 9;
232: {{ CPTR srca = m68k_getpc();
233: UWORD srcdp = nextiword();
234: srca += (LONG)(BYTE)(srcdp & 0xFF);
235: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
236: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
237: srca += srcdpr;
238: { WORD src = get_word(srca);
239: { regs.a[dstreg] = (LONG)(WORD)(src);
240: }}}}}}
241: void op_307c(UWORD opcode)
242: {
243: ULONG dstreg = (opcode & 3584) >> 9;
244: {{ WORD src = nextiword();
245: { regs.a[dstreg] = (LONG)(WORD)(src);
246: }}}}
247: void op_3080(UWORD opcode)
248: {
249: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
250: ULONG dstreg = (opcode & 3584) >> 9;
251: {{ WORD src = regs.d[srcreg];
252: { CPTR dsta = regs.a[dstreg];
253: regs.v = regs.c = 0;
254: regs.z = ((WORD)(src)) == 0;
255: regs.n = ((WORD)(src)) < 0;
256: put_word(dsta,src);
257: }}}}
258: void op_3088(UWORD opcode)
259: {
260: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
261: ULONG dstreg = (opcode & 3584) >> 9;
262: {{ WORD src = regs.a[srcreg];
263: { CPTR dsta = regs.a[dstreg];
264: regs.v = regs.c = 0;
265: regs.z = ((WORD)(src)) == 0;
266: regs.n = ((WORD)(src)) < 0;
267: put_word(dsta,src);
268: }}}}
269: void op_3090(UWORD opcode)
270: {
271: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
272: ULONG dstreg = (opcode & 3584) >> 9;
273: {{ CPTR srca = regs.a[srcreg];
274: WORD src = get_word(srca);
275: { CPTR dsta = regs.a[dstreg];
276: regs.v = regs.c = 0;
277: regs.z = ((WORD)(src)) == 0;
278: regs.n = ((WORD)(src)) < 0;
279: put_word(dsta,src);
280: }}}}
281: void op_3098(UWORD opcode)
282: {
283: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
284: ULONG dstreg = (opcode & 3584) >> 9;
285: {{ CPTR srca = regs.a[srcreg];
286: WORD src = get_word(srca);
287: { regs.a[srcreg] += 2;
288: { CPTR dsta = regs.a[dstreg];
289: regs.v = regs.c = 0;
290: regs.z = ((WORD)(src)) == 0;
291: regs.n = ((WORD)(src)) < 0;
292: put_word(dsta,src);
293: }}}}}
294: void op_30a0(UWORD opcode)
295: {
296: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
297: ULONG dstreg = (opcode & 3584) >> 9;
298: {{ regs.a[srcreg] -= 2;
299: { CPTR srca = regs.a[srcreg];
300: WORD src = get_word(srca);
301: { CPTR dsta = regs.a[dstreg];
302: regs.v = regs.c = 0;
303: regs.z = ((WORD)(src)) == 0;
304: regs.n = ((WORD)(src)) < 0;
305: put_word(dsta,src);
306: }}}}}
307: void op_30a8(UWORD opcode)
308: {
309: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
310: ULONG dstreg = (opcode & 3584) >> 9;
311: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
312: WORD src = get_word(srca);
313: { CPTR dsta = regs.a[dstreg];
314: regs.v = regs.c = 0;
315: regs.z = ((WORD)(src)) == 0;
316: regs.n = ((WORD)(src)) < 0;
317: put_word(dsta,src);
318: }}}}
319: void op_30b0(UWORD opcode)
320: {
321: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
322: ULONG dstreg = (opcode & 3584) >> 9;
323: {{ CPTR srca = regs.a[srcreg];
324: UWORD srcdp = nextiword();
325: srca += (LONG)(BYTE)(srcdp & 0xFF);
326: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
327: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
328: srca += srcdpr;
329: { WORD src = get_word(srca);
330: { CPTR dsta = regs.a[dstreg];
331: regs.v = regs.c = 0;
332: regs.z = ((WORD)(src)) == 0;
333: regs.n = ((WORD)(src)) < 0;
334: put_word(dsta,src);
335: }}}}}}
336: void op_30b8(UWORD opcode)
337: {
338: ULONG dstreg = (opcode & 3584) >> 9;
339: {{ CPTR srca = (LONG)(WORD)nextiword();
340: WORD src = get_word(srca);
341: { CPTR dsta = regs.a[dstreg];
342: regs.v = regs.c = 0;
343: regs.z = ((WORD)(src)) == 0;
344: regs.n = ((WORD)(src)) < 0;
345: put_word(dsta,src);
346: }}}}
347: void op_30b9(UWORD opcode)
348: {
349: ULONG dstreg = (opcode & 3584) >> 9;
350: {{ CPTR srca = nextilong();
351: WORD src = get_word(srca);
352: { CPTR dsta = regs.a[dstreg];
353: regs.v = regs.c = 0;
354: regs.z = ((WORD)(src)) == 0;
355: regs.n = ((WORD)(src)) < 0;
356: put_word(dsta,src);
357: }}}}
358: void op_30ba(UWORD opcode)
359: {
360: ULONG dstreg = (opcode & 3584) >> 9;
361: {{ CPTR srca = m68k_getpc();
362: srca += (LONG)(WORD)nextiword();
363: { WORD src = get_word(srca);
364: { CPTR dsta = regs.a[dstreg];
365: regs.v = regs.c = 0;
366: regs.z = ((WORD)(src)) == 0;
367: regs.n = ((WORD)(src)) < 0;
368: put_word(dsta,src);
369: }}}}}
370: void op_30bb(UWORD opcode)
371: {
372: ULONG dstreg = (opcode & 3584) >> 9;
373: {{ CPTR srca = m68k_getpc();
374: UWORD srcdp = nextiword();
375: srca += (LONG)(BYTE)(srcdp & 0xFF);
376: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
377: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
378: srca += srcdpr;
379: { WORD src = get_word(srca);
380: { CPTR dsta = regs.a[dstreg];
381: regs.v = regs.c = 0;
382: regs.z = ((WORD)(src)) == 0;
383: regs.n = ((WORD)(src)) < 0;
384: put_word(dsta,src);
385: }}}}}}
386: void op_30bc(UWORD opcode)
387: {
388: ULONG dstreg = (opcode & 3584) >> 9;
389: {{ WORD src = nextiword();
390: { CPTR dsta = regs.a[dstreg];
391: regs.v = regs.c = 0;
392: regs.z = ((WORD)(src)) == 0;
393: regs.n = ((WORD)(src)) < 0;
394: put_word(dsta,src);
395: }}}}
396: void op_30c0(UWORD opcode)
397: {
398: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
399: ULONG dstreg = (opcode & 3584) >> 9;
400: {{ WORD src = regs.d[srcreg];
401: { CPTR dsta = regs.a[dstreg];
402: { regs.a[dstreg] += 2;
403: regs.v = regs.c = 0;
404: regs.z = ((WORD)(src)) == 0;
405: regs.n = ((WORD)(src)) < 0;
406: put_word(dsta,src);
407: }}}}}
408: void op_30c8(UWORD opcode)
409: {
410: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
411: ULONG dstreg = (opcode & 3584) >> 9;
412: {{ WORD src = regs.a[srcreg];
413: { CPTR dsta = regs.a[dstreg];
414: { regs.a[dstreg] += 2;
415: regs.v = regs.c = 0;
416: regs.z = ((WORD)(src)) == 0;
417: regs.n = ((WORD)(src)) < 0;
418: put_word(dsta,src);
419: }}}}}
420: void op_30d0(UWORD opcode)
421: {
422: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
423: ULONG dstreg = (opcode & 3584) >> 9;
424: {{ CPTR srca = regs.a[srcreg];
425: WORD src = get_word(srca);
426: { CPTR dsta = regs.a[dstreg];
427: { regs.a[dstreg] += 2;
428: regs.v = regs.c = 0;
429: regs.z = ((WORD)(src)) == 0;
430: regs.n = ((WORD)(src)) < 0;
431: put_word(dsta,src);
432: }}}}}
433: void op_30d8(UWORD opcode)
434: {
435: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
436: ULONG dstreg = (opcode & 3584) >> 9;
437: {{ CPTR srca = regs.a[srcreg];
438: WORD src = get_word(srca);
439: { regs.a[srcreg] += 2;
440: { CPTR dsta = regs.a[dstreg];
441: { regs.a[dstreg] += 2;
442: regs.v = regs.c = 0;
443: regs.z = ((WORD)(src)) == 0;
444: regs.n = ((WORD)(src)) < 0;
445: put_word(dsta,src);
446: }}}}}}
447: void op_30e0(UWORD opcode)
448: {
449: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
450: ULONG dstreg = (opcode & 3584) >> 9;
451: {{ regs.a[srcreg] -= 2;
452: { CPTR srca = regs.a[srcreg];
453: WORD src = get_word(srca);
454: { CPTR dsta = regs.a[dstreg];
455: { regs.a[dstreg] += 2;
456: regs.v = regs.c = 0;
457: regs.z = ((WORD)(src)) == 0;
458: regs.n = ((WORD)(src)) < 0;
459: put_word(dsta,src);
460: }}}}}}
461: void op_30e8(UWORD opcode)
462: {
463: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
464: ULONG dstreg = (opcode & 3584) >> 9;
465: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
466: WORD src = get_word(srca);
467: { CPTR dsta = regs.a[dstreg];
468: { regs.a[dstreg] += 2;
469: regs.v = regs.c = 0;
470: regs.z = ((WORD)(src)) == 0;
471: regs.n = ((WORD)(src)) < 0;
472: put_word(dsta,src);
473: }}}}}
474: void op_30f0(UWORD opcode)
475: {
476: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
477: ULONG dstreg = (opcode & 3584) >> 9;
478: {{ CPTR srca = regs.a[srcreg];
479: UWORD srcdp = nextiword();
480: srca += (LONG)(BYTE)(srcdp & 0xFF);
481: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
482: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
483: srca += srcdpr;
484: { WORD src = get_word(srca);
485: { CPTR dsta = regs.a[dstreg];
486: { regs.a[dstreg] += 2;
487: regs.v = regs.c = 0;
488: regs.z = ((WORD)(src)) == 0;
489: regs.n = ((WORD)(src)) < 0;
490: put_word(dsta,src);
491: }}}}}}}
492: void op_30f8(UWORD opcode)
493: {
494: ULONG dstreg = (opcode & 3584) >> 9;
495: {{ CPTR srca = (LONG)(WORD)nextiword();
496: WORD src = get_word(srca);
497: { CPTR dsta = regs.a[dstreg];
498: { regs.a[dstreg] += 2;
499: regs.v = regs.c = 0;
500: regs.z = ((WORD)(src)) == 0;
501: regs.n = ((WORD)(src)) < 0;
502: put_word(dsta,src);
503: }}}}}
504: void op_30f9(UWORD opcode)
505: {
506: ULONG dstreg = (opcode & 3584) >> 9;
507: {{ CPTR srca = nextilong();
508: WORD src = get_word(srca);
509: { CPTR dsta = regs.a[dstreg];
510: { regs.a[dstreg] += 2;
511: regs.v = regs.c = 0;
512: regs.z = ((WORD)(src)) == 0;
513: regs.n = ((WORD)(src)) < 0;
514: put_word(dsta,src);
515: }}}}}
516: void op_30fa(UWORD opcode)
517: {
518: ULONG dstreg = (opcode & 3584) >> 9;
519: {{ CPTR srca = m68k_getpc();
520: srca += (LONG)(WORD)nextiword();
521: { WORD src = get_word(srca);
522: { CPTR dsta = regs.a[dstreg];
523: { regs.a[dstreg] += 2;
524: regs.v = regs.c = 0;
525: regs.z = ((WORD)(src)) == 0;
526: regs.n = ((WORD)(src)) < 0;
527: put_word(dsta,src);
528: }}}}}}
529: void op_30fb(UWORD opcode)
530: {
531: ULONG dstreg = (opcode & 3584) >> 9;
532: {{ CPTR srca = m68k_getpc();
533: UWORD srcdp = nextiword();
534: srca += (LONG)(BYTE)(srcdp & 0xFF);
535: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
536: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
537: srca += srcdpr;
538: { WORD src = get_word(srca);
539: { CPTR dsta = regs.a[dstreg];
540: { regs.a[dstreg] += 2;
541: regs.v = regs.c = 0;
542: regs.z = ((WORD)(src)) == 0;
543: regs.n = ((WORD)(src)) < 0;
544: put_word(dsta,src);
545: }}}}}}}
546: void op_30fc(UWORD opcode)
547: {
548: ULONG dstreg = (opcode & 3584) >> 9;
549: {{ WORD src = nextiword();
550: { CPTR dsta = regs.a[dstreg];
551: { regs.a[dstreg] += 2;
552: regs.v = regs.c = 0;
553: regs.z = ((WORD)(src)) == 0;
554: regs.n = ((WORD)(src)) < 0;
555: put_word(dsta,src);
556: }}}}}
557: void op_3100(UWORD opcode)
558: {
559: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
560: ULONG dstreg = (opcode & 3584) >> 9;
561: {{ WORD src = regs.d[srcreg];
562: { regs.a[dstreg] -= 2;
563: { CPTR dsta = regs.a[dstreg];
564: regs.v = regs.c = 0;
565: regs.z = ((WORD)(src)) == 0;
566: regs.n = ((WORD)(src)) < 0;
567: put_word(dsta,src);
568: }}}}}
569: void op_3108(UWORD opcode)
570: {
571: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
572: ULONG dstreg = (opcode & 3584) >> 9;
573: {{ WORD src = regs.a[srcreg];
574: { regs.a[dstreg] -= 2;
575: { CPTR dsta = regs.a[dstreg];
576: regs.v = regs.c = 0;
577: regs.z = ((WORD)(src)) == 0;
578: regs.n = ((WORD)(src)) < 0;
579: put_word(dsta,src);
580: }}}}}
581: void op_3110(UWORD opcode)
582: {
583: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
584: ULONG dstreg = (opcode & 3584) >> 9;
585: {{ CPTR srca = regs.a[srcreg];
586: WORD src = get_word(srca);
587: { regs.a[dstreg] -= 2;
588: { CPTR dsta = regs.a[dstreg];
589: regs.v = regs.c = 0;
590: regs.z = ((WORD)(src)) == 0;
591: regs.n = ((WORD)(src)) < 0;
592: put_word(dsta,src);
593: }}}}}
594: void op_3118(UWORD opcode)
595: {
596: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
597: ULONG dstreg = (opcode & 3584) >> 9;
598: {{ CPTR srca = regs.a[srcreg];
599: WORD src = get_word(srca);
600: { regs.a[srcreg] += 2;
601: { regs.a[dstreg] -= 2;
602: { CPTR dsta = regs.a[dstreg];
603: regs.v = regs.c = 0;
604: regs.z = ((WORD)(src)) == 0;
605: regs.n = ((WORD)(src)) < 0;
606: put_word(dsta,src);
607: }}}}}}
608: void op_3120(UWORD opcode)
609: {
610: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
611: ULONG dstreg = (opcode & 3584) >> 9;
612: {{ regs.a[srcreg] -= 2;
613: { CPTR srca = regs.a[srcreg];
614: WORD src = get_word(srca);
615: { regs.a[dstreg] -= 2;
616: { CPTR dsta = regs.a[dstreg];
617: regs.v = regs.c = 0;
618: regs.z = ((WORD)(src)) == 0;
619: regs.n = ((WORD)(src)) < 0;
620: put_word(dsta,src);
621: }}}}}}
622: void op_3128(UWORD opcode)
623: {
624: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
625: ULONG dstreg = (opcode & 3584) >> 9;
626: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
627: WORD src = get_word(srca);
628: { regs.a[dstreg] -= 2;
629: { CPTR dsta = regs.a[dstreg];
630: regs.v = regs.c = 0;
631: regs.z = ((WORD)(src)) == 0;
632: regs.n = ((WORD)(src)) < 0;
633: put_word(dsta,src);
634: }}}}}
635: void op_3130(UWORD opcode)
636: {
637: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
638: ULONG dstreg = (opcode & 3584) >> 9;
639: {{ CPTR srca = regs.a[srcreg];
640: UWORD srcdp = nextiword();
641: srca += (LONG)(BYTE)(srcdp & 0xFF);
642: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
643: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
644: srca += srcdpr;
645: { WORD src = get_word(srca);
646: { regs.a[dstreg] -= 2;
647: { CPTR dsta = regs.a[dstreg];
648: regs.v = regs.c = 0;
649: regs.z = ((WORD)(src)) == 0;
650: regs.n = ((WORD)(src)) < 0;
651: put_word(dsta,src);
652: }}}}}}}
653: void op_3138(UWORD opcode)
654: {
655: ULONG dstreg = (opcode & 3584) >> 9;
656: {{ CPTR srca = (LONG)(WORD)nextiword();
657: WORD src = get_word(srca);
658: { regs.a[dstreg] -= 2;
659: { CPTR dsta = regs.a[dstreg];
660: regs.v = regs.c = 0;
661: regs.z = ((WORD)(src)) == 0;
662: regs.n = ((WORD)(src)) < 0;
663: put_word(dsta,src);
664: }}}}}
665: void op_3139(UWORD opcode)
666: {
667: ULONG dstreg = (opcode & 3584) >> 9;
668: {{ CPTR srca = nextilong();
669: WORD src = get_word(srca);
670: { regs.a[dstreg] -= 2;
671: { CPTR dsta = regs.a[dstreg];
672: regs.v = regs.c = 0;
673: regs.z = ((WORD)(src)) == 0;
674: regs.n = ((WORD)(src)) < 0;
675: put_word(dsta,src);
676: }}}}}
677: void op_313a(UWORD opcode)
678: {
679: ULONG dstreg = (opcode & 3584) >> 9;
680: {{ CPTR srca = m68k_getpc();
681: srca += (LONG)(WORD)nextiword();
682: { WORD src = get_word(srca);
683: { regs.a[dstreg] -= 2;
684: { CPTR dsta = regs.a[dstreg];
685: regs.v = regs.c = 0;
686: regs.z = ((WORD)(src)) == 0;
687: regs.n = ((WORD)(src)) < 0;
688: put_word(dsta,src);
689: }}}}}}
690: void op_313b(UWORD opcode)
691: {
692: ULONG dstreg = (opcode & 3584) >> 9;
693: {{ CPTR srca = m68k_getpc();
694: UWORD srcdp = nextiword();
695: srca += (LONG)(BYTE)(srcdp & 0xFF);
696: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
697: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
698: srca += srcdpr;
699: { WORD src = get_word(srca);
700: { regs.a[dstreg] -= 2;
701: { CPTR dsta = regs.a[dstreg];
702: regs.v = regs.c = 0;
703: regs.z = ((WORD)(src)) == 0;
704: regs.n = ((WORD)(src)) < 0;
705: put_word(dsta,src);
706: }}}}}}}
707: void op_313c(UWORD opcode)
708: {
709: ULONG dstreg = (opcode & 3584) >> 9;
710: {{ WORD src = nextiword();
711: { regs.a[dstreg] -= 2;
712: { CPTR dsta = regs.a[dstreg];
713: regs.v = regs.c = 0;
714: regs.z = ((WORD)(src)) == 0;
715: regs.n = ((WORD)(src)) < 0;
716: put_word(dsta,src);
717: }}}}}
718: void op_3140(UWORD opcode)
719: {
720: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
721: ULONG dstreg = (opcode & 3584) >> 9;
722: {{ WORD src = regs.d[srcreg];
723: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
724: regs.v = regs.c = 0;
725: regs.z = ((WORD)(src)) == 0;
726: regs.n = ((WORD)(src)) < 0;
727: put_word(dsta,src);
728: }}}}
729: void op_3148(UWORD opcode)
730: {
731: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
732: ULONG dstreg = (opcode & 3584) >> 9;
733: {{ WORD src = regs.a[srcreg];
734: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
735: regs.v = regs.c = 0;
736: regs.z = ((WORD)(src)) == 0;
737: regs.n = ((WORD)(src)) < 0;
738: put_word(dsta,src);
739: }}}}
740: void op_3150(UWORD opcode)
741: {
742: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
743: ULONG dstreg = (opcode & 3584) >> 9;
744: {{ CPTR srca = regs.a[srcreg];
745: WORD src = get_word(srca);
746: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
747: regs.v = regs.c = 0;
748: regs.z = ((WORD)(src)) == 0;
749: regs.n = ((WORD)(src)) < 0;
750: put_word(dsta,src);
751: }}}}
752: void op_3158(UWORD opcode)
753: {
754: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
755: ULONG dstreg = (opcode & 3584) >> 9;
756: {{ CPTR srca = regs.a[srcreg];
757: WORD src = get_word(srca);
758: { regs.a[srcreg] += 2;
759: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
760: regs.v = regs.c = 0;
761: regs.z = ((WORD)(src)) == 0;
762: regs.n = ((WORD)(src)) < 0;
763: put_word(dsta,src);
764: }}}}}
765: void op_3160(UWORD opcode)
766: {
767: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
768: ULONG dstreg = (opcode & 3584) >> 9;
769: {{ regs.a[srcreg] -= 2;
770: { CPTR srca = regs.a[srcreg];
771: WORD src = get_word(srca);
772: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
773: regs.v = regs.c = 0;
774: regs.z = ((WORD)(src)) == 0;
775: regs.n = ((WORD)(src)) < 0;
776: put_word(dsta,src);
777: }}}}}
778: void op_3168(UWORD opcode)
779: {
780: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
781: ULONG dstreg = (opcode & 3584) >> 9;
782: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
783: WORD src = get_word(srca);
784: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
785: regs.v = regs.c = 0;
786: regs.z = ((WORD)(src)) == 0;
787: regs.n = ((WORD)(src)) < 0;
788: put_word(dsta,src);
789: }}}}
790: void op_3170(UWORD opcode)
791: {
792: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
793: ULONG dstreg = (opcode & 3584) >> 9;
794: {{ CPTR srca = regs.a[srcreg];
795: UWORD srcdp = nextiword();
796: srca += (LONG)(BYTE)(srcdp & 0xFF);
797: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
798: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
799: srca += srcdpr;
800: { WORD src = get_word(srca);
801: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
802: regs.v = regs.c = 0;
803: regs.z = ((WORD)(src)) == 0;
804: regs.n = ((WORD)(src)) < 0;
805: put_word(dsta,src);
806: }}}}}}
807: void op_3178(UWORD opcode)
808: {
809: ULONG dstreg = (opcode & 3584) >> 9;
810: {{ CPTR srca = (LONG)(WORD)nextiword();
811: WORD src = get_word(srca);
812: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
813: regs.v = regs.c = 0;
814: regs.z = ((WORD)(src)) == 0;
815: regs.n = ((WORD)(src)) < 0;
816: put_word(dsta,src);
817: }}}}
818: void op_3179(UWORD opcode)
819: {
820: ULONG dstreg = (opcode & 3584) >> 9;
821: {{ CPTR srca = nextilong();
822: WORD src = get_word(srca);
823: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
824: regs.v = regs.c = 0;
825: regs.z = ((WORD)(src)) == 0;
826: regs.n = ((WORD)(src)) < 0;
827: put_word(dsta,src);
828: }}}}
829: void op_317a(UWORD opcode)
830: {
831: ULONG dstreg = (opcode & 3584) >> 9;
832: {{ CPTR srca = m68k_getpc();
833: srca += (LONG)(WORD)nextiword();
834: { WORD src = get_word(srca);
835: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
836: regs.v = regs.c = 0;
837: regs.z = ((WORD)(src)) == 0;
838: regs.n = ((WORD)(src)) < 0;
839: put_word(dsta,src);
840: }}}}}
841: void op_317b(UWORD opcode)
842: {
843: ULONG dstreg = (opcode & 3584) >> 9;
844: {{ CPTR srca = m68k_getpc();
845: UWORD srcdp = nextiword();
846: srca += (LONG)(BYTE)(srcdp & 0xFF);
847: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
848: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
849: srca += srcdpr;
850: { WORD src = get_word(srca);
851: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
852: regs.v = regs.c = 0;
853: regs.z = ((WORD)(src)) == 0;
854: regs.n = ((WORD)(src)) < 0;
855: put_word(dsta,src);
856: }}}}}}
857: void op_317c(UWORD opcode)
858: {
859: ULONG dstreg = (opcode & 3584) >> 9;
860: {{ WORD src = nextiword();
861: { CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
862: regs.v = regs.c = 0;
863: regs.z = ((WORD)(src)) == 0;
864: regs.n = ((WORD)(src)) < 0;
865: put_word(dsta,src);
866: }}}}
867: void op_3180(UWORD opcode)
868: {
869: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
870: ULONG dstreg = (opcode & 3584) >> 9;
871: {{ WORD src = regs.d[srcreg];
872: { CPTR dsta = regs.a[dstreg];
873: UWORD dstdp = nextiword();
874: dsta += (LONG)(BYTE)(dstdp & 0xFF);
875: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
876: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
877: dsta += dstdpr;
878: regs.v = regs.c = 0;
879: regs.z = ((WORD)(src)) == 0;
880: regs.n = ((WORD)(src)) < 0;
881: put_word(dsta,src);
882: }}}}}
883: void op_3188(UWORD opcode)
884: {
885: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
886: ULONG dstreg = (opcode & 3584) >> 9;
887: {{ WORD src = regs.a[srcreg];
888: { CPTR dsta = regs.a[dstreg];
889: UWORD dstdp = nextiword();
890: dsta += (LONG)(BYTE)(dstdp & 0xFF);
891: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
892: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
893: dsta += dstdpr;
894: regs.v = regs.c = 0;
895: regs.z = ((WORD)(src)) == 0;
896: regs.n = ((WORD)(src)) < 0;
897: put_word(dsta,src);
898: }}}}}
899: void op_3190(UWORD opcode)
900: {
901: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
902: ULONG dstreg = (opcode & 3584) >> 9;
903: {{ CPTR srca = regs.a[srcreg];
904: WORD src = get_word(srca);
905: { CPTR dsta = regs.a[dstreg];
906: UWORD dstdp = nextiword();
907: dsta += (LONG)(BYTE)(dstdp & 0xFF);
908: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
909: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
910: dsta += dstdpr;
911: regs.v = regs.c = 0;
912: regs.z = ((WORD)(src)) == 0;
913: regs.n = ((WORD)(src)) < 0;
914: put_word(dsta,src);
915: }}}}}
916: void op_3198(UWORD opcode)
917: {
918: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
919: ULONG dstreg = (opcode & 3584) >> 9;
920: {{ CPTR srca = regs.a[srcreg];
921: WORD src = get_word(srca);
922: { regs.a[srcreg] += 2;
923: { CPTR dsta = regs.a[dstreg];
924: UWORD dstdp = nextiword();
925: dsta += (LONG)(BYTE)(dstdp & 0xFF);
926: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
927: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
928: dsta += dstdpr;
929: regs.v = regs.c = 0;
930: regs.z = ((WORD)(src)) == 0;
931: regs.n = ((WORD)(src)) < 0;
932: put_word(dsta,src);
933: }}}}}}
934: void op_31a0(UWORD opcode)
935: {
936: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
937: ULONG dstreg = (opcode & 3584) >> 9;
938: {{ regs.a[srcreg] -= 2;
939: { CPTR srca = regs.a[srcreg];
940: WORD src = get_word(srca);
941: { CPTR dsta = regs.a[dstreg];
942: UWORD dstdp = nextiword();
943: dsta += (LONG)(BYTE)(dstdp & 0xFF);
944: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
945: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
946: dsta += dstdpr;
947: regs.v = regs.c = 0;
948: regs.z = ((WORD)(src)) == 0;
949: regs.n = ((WORD)(src)) < 0;
950: put_word(dsta,src);
951: }}}}}}
952: void op_31a8(UWORD opcode)
953: {
954: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
955: ULONG dstreg = (opcode & 3584) >> 9;
956: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
957: WORD src = get_word(srca);
958: { CPTR dsta = regs.a[dstreg];
959: UWORD dstdp = nextiword();
960: dsta += (LONG)(BYTE)(dstdp & 0xFF);
961: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
962: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
963: dsta += dstdpr;
964: regs.v = regs.c = 0;
965: regs.z = ((WORD)(src)) == 0;
966: regs.n = ((WORD)(src)) < 0;
967: put_word(dsta,src);
968: }}}}}
969: void op_31b0(UWORD opcode)
970: {
971: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
972: ULONG dstreg = (opcode & 3584) >> 9;
973: {{ CPTR srca = regs.a[srcreg];
974: UWORD srcdp = nextiword();
975: srca += (LONG)(BYTE)(srcdp & 0xFF);
976: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
977: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
978: srca += srcdpr;
979: { WORD src = get_word(srca);
980: { CPTR dsta = regs.a[dstreg];
981: UWORD dstdp = nextiword();
982: dsta += (LONG)(BYTE)(dstdp & 0xFF);
983: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
984: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
985: dsta += dstdpr;
986: regs.v = regs.c = 0;
987: regs.z = ((WORD)(src)) == 0;
988: regs.n = ((WORD)(src)) < 0;
989: put_word(dsta,src);
990: }}}}}}}
991: void op_31b8(UWORD opcode)
992: {
993: ULONG dstreg = (opcode & 3584) >> 9;
994: {{ CPTR srca = (LONG)(WORD)nextiword();
995: WORD src = get_word(srca);
996: { CPTR dsta = regs.a[dstreg];
997: UWORD dstdp = nextiword();
998: dsta += (LONG)(BYTE)(dstdp & 0xFF);
999: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
1000: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
1001: dsta += dstdpr;
1002: regs.v = regs.c = 0;
1003: regs.z = ((WORD)(src)) == 0;
1004: regs.n = ((WORD)(src)) < 0;
1005: put_word(dsta,src);
1006: }}}}}
1007: void op_31b9(UWORD opcode)
1008: {
1009: ULONG dstreg = (opcode & 3584) >> 9;
1010: {{ CPTR srca = nextilong();
1011: WORD src = get_word(srca);
1012: { CPTR dsta = regs.a[dstreg];
1013: UWORD dstdp = nextiword();
1014: dsta += (LONG)(BYTE)(dstdp & 0xFF);
1015: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
1016: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
1017: dsta += dstdpr;
1018: regs.v = regs.c = 0;
1019: regs.z = ((WORD)(src)) == 0;
1020: regs.n = ((WORD)(src)) < 0;
1021: put_word(dsta,src);
1022: }}}}}
1023: void op_31ba(UWORD opcode)
1024: {
1025: ULONG dstreg = (opcode & 3584) >> 9;
1026: {{ CPTR srca = m68k_getpc();
1027: srca += (LONG)(WORD)nextiword();
1028: { WORD src = get_word(srca);
1029: { CPTR dsta = regs.a[dstreg];
1030: UWORD dstdp = nextiword();
1031: dsta += (LONG)(BYTE)(dstdp & 0xFF);
1032: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
1033: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
1034: dsta += dstdpr;
1035: regs.v = regs.c = 0;
1036: regs.z = ((WORD)(src)) == 0;
1037: regs.n = ((WORD)(src)) < 0;
1038: put_word(dsta,src);
1039: }}}}}}
1040: void op_31bb(UWORD opcode)
1041: {
1042: ULONG dstreg = (opcode & 3584) >> 9;
1043: {{ CPTR srca = m68k_getpc();
1044: UWORD srcdp = nextiword();
1045: srca += (LONG)(BYTE)(srcdp & 0xFF);
1046: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
1047: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
1048: srca += srcdpr;
1049: { WORD src = get_word(srca);
1050: { CPTR dsta = regs.a[dstreg];
1051: UWORD dstdp = nextiword();
1052: dsta += (LONG)(BYTE)(dstdp & 0xFF);
1053: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
1054: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
1055: dsta += dstdpr;
1056: regs.v = regs.c = 0;
1057: regs.z = ((WORD)(src)) == 0;
1058: regs.n = ((WORD)(src)) < 0;
1059: put_word(dsta,src);
1060: }}}}}}}
1061: void op_31bc(UWORD opcode)
1062: {
1063: ULONG dstreg = (opcode & 3584) >> 9;
1064: {{ WORD src = nextiword();
1065: { CPTR dsta = regs.a[dstreg];
1066: UWORD dstdp = nextiword();
1067: dsta += (LONG)(BYTE)(dstdp & 0xFF);
1068: { ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
1069: if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
1070: dsta += dstdpr;
1071: regs.v = regs.c = 0;
1072: regs.z = ((WORD)(src)) == 0;
1073: regs.n = ((WORD)(src)) < 0;
1074: put_word(dsta,src);
1075: }}}}}
1076: void op_31c0(UWORD opcode)
1077: {
1078: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1079: {{ WORD src = regs.d[srcreg];
1080: { CPTR dsta = (LONG)(WORD)nextiword();
1081: regs.v = regs.c = 0;
1082: regs.z = ((WORD)(src)) == 0;
1083: regs.n = ((WORD)(src)) < 0;
1084: put_word(dsta,src);
1085: }}}}
1086: void op_31c8(UWORD opcode)
1087: {
1088: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1089: {{ WORD src = regs.a[srcreg];
1090: { CPTR dsta = (LONG)(WORD)nextiword();
1091: regs.v = regs.c = 0;
1092: regs.z = ((WORD)(src)) == 0;
1093: regs.n = ((WORD)(src)) < 0;
1094: put_word(dsta,src);
1095: }}}}
1096: void op_31d0(UWORD opcode)
1097: {
1098: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1099: {{ CPTR srca = regs.a[srcreg];
1100: WORD src = get_word(srca);
1101: { CPTR dsta = (LONG)(WORD)nextiword();
1102: regs.v = regs.c = 0;
1103: regs.z = ((WORD)(src)) == 0;
1104: regs.n = ((WORD)(src)) < 0;
1105: put_word(dsta,src);
1106: }}}}
1107: void op_31d8(UWORD opcode)
1108: {
1109: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1110: {{ CPTR srca = regs.a[srcreg];
1111: WORD src = get_word(srca);
1112: { regs.a[srcreg] += 2;
1113: { CPTR dsta = (LONG)(WORD)nextiword();
1114: regs.v = regs.c = 0;
1115: regs.z = ((WORD)(src)) == 0;
1116: regs.n = ((WORD)(src)) < 0;
1117: put_word(dsta,src);
1118: }}}}}
1119: void op_31e0(UWORD opcode)
1120: {
1121: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1122: {{ regs.a[srcreg] -= 2;
1123: { CPTR srca = regs.a[srcreg];
1124: WORD src = get_word(srca);
1125: { CPTR dsta = (LONG)(WORD)nextiword();
1126: regs.v = regs.c = 0;
1127: regs.z = ((WORD)(src)) == 0;
1128: regs.n = ((WORD)(src)) < 0;
1129: put_word(dsta,src);
1130: }}}}}
1131: void op_31e8(UWORD opcode)
1132: {
1133: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1134: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
1135: WORD src = get_word(srca);
1136: { CPTR dsta = (LONG)(WORD)nextiword();
1137: regs.v = regs.c = 0;
1138: regs.z = ((WORD)(src)) == 0;
1139: regs.n = ((WORD)(src)) < 0;
1140: put_word(dsta,src);
1141: }}}}
1142: void op_31f0(UWORD opcode)
1143: {
1144: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1145: {{ CPTR srca = regs.a[srcreg];
1146: UWORD srcdp = nextiword();
1147: srca += (LONG)(BYTE)(srcdp & 0xFF);
1148: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
1149: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
1150: srca += srcdpr;
1151: { WORD src = get_word(srca);
1152: { CPTR dsta = (LONG)(WORD)nextiword();
1153: regs.v = regs.c = 0;
1154: regs.z = ((WORD)(src)) == 0;
1155: regs.n = ((WORD)(src)) < 0;
1156: put_word(dsta,src);
1157: }}}}}}
1158: void op_31f8(UWORD opcode)
1159: {
1160: {{ CPTR srca = (LONG)(WORD)nextiword();
1161: WORD src = get_word(srca);
1162: { CPTR dsta = (LONG)(WORD)nextiword();
1163: regs.v = regs.c = 0;
1164: regs.z = ((WORD)(src)) == 0;
1165: regs.n = ((WORD)(src)) < 0;
1166: put_word(dsta,src);
1167: }}}}
1168: void op_31f9(UWORD opcode)
1169: {
1170: {{ CPTR srca = nextilong();
1171: WORD src = get_word(srca);
1172: { CPTR dsta = (LONG)(WORD)nextiword();
1173: regs.v = regs.c = 0;
1174: regs.z = ((WORD)(src)) == 0;
1175: regs.n = ((WORD)(src)) < 0;
1176: put_word(dsta,src);
1177: }}}}
1178: void op_31fa(UWORD opcode)
1179: {
1180: {{ CPTR srca = m68k_getpc();
1181: srca += (LONG)(WORD)nextiword();
1182: { WORD src = get_word(srca);
1183: { CPTR dsta = (LONG)(WORD)nextiword();
1184: regs.v = regs.c = 0;
1185: regs.z = ((WORD)(src)) == 0;
1186: regs.n = ((WORD)(src)) < 0;
1187: put_word(dsta,src);
1188: }}}}}
1189: void op_31fb(UWORD opcode)
1190: {
1191: {{ CPTR srca = m68k_getpc();
1192: UWORD srcdp = nextiword();
1193: srca += (LONG)(BYTE)(srcdp & 0xFF);
1194: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
1195: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
1196: srca += srcdpr;
1197: { WORD src = get_word(srca);
1198: { CPTR dsta = (LONG)(WORD)nextiword();
1199: regs.v = regs.c = 0;
1200: regs.z = ((WORD)(src)) == 0;
1201: regs.n = ((WORD)(src)) < 0;
1202: put_word(dsta,src);
1203: }}}}}}
1204: void op_31fc(UWORD opcode)
1205: {
1206: {{ WORD src = nextiword();
1207: { CPTR dsta = (LONG)(WORD)nextiword();
1208: regs.v = regs.c = 0;
1209: regs.z = ((WORD)(src)) == 0;
1210: regs.n = ((WORD)(src)) < 0;
1211: put_word(dsta,src);
1212: }}}}
1213: void op_33c0(UWORD opcode)
1214: {
1215: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1216: {{ WORD src = regs.d[srcreg];
1217: { CPTR dsta = nextilong();
1218: regs.v = regs.c = 0;
1219: regs.z = ((WORD)(src)) == 0;
1220: regs.n = ((WORD)(src)) < 0;
1221: put_word(dsta,src);
1222: }}}}
1223: void op_33c8(UWORD opcode)
1224: {
1225: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1226: {{ WORD src = regs.a[srcreg];
1227: { CPTR dsta = nextilong();
1228: regs.v = regs.c = 0;
1229: regs.z = ((WORD)(src)) == 0;
1230: regs.n = ((WORD)(src)) < 0;
1231: put_word(dsta,src);
1232: }}}}
1233: void op_33d0(UWORD opcode)
1234: {
1235: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1236: {{ CPTR srca = regs.a[srcreg];
1237: WORD src = get_word(srca);
1238: { CPTR dsta = nextilong();
1239: regs.v = regs.c = 0;
1240: regs.z = ((WORD)(src)) == 0;
1241: regs.n = ((WORD)(src)) < 0;
1242: put_word(dsta,src);
1243: }}}}
1244: void op_33d8(UWORD opcode)
1245: {
1246: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1247: {{ CPTR srca = regs.a[srcreg];
1248: WORD src = get_word(srca);
1249: { regs.a[srcreg] += 2;
1250: { CPTR dsta = nextilong();
1251: regs.v = regs.c = 0;
1252: regs.z = ((WORD)(src)) == 0;
1253: regs.n = ((WORD)(src)) < 0;
1254: put_word(dsta,src);
1255: }}}}}
1256: void op_33e0(UWORD opcode)
1257: {
1258: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1259: {{ regs.a[srcreg] -= 2;
1260: { CPTR srca = regs.a[srcreg];
1261: WORD src = get_word(srca);
1262: { CPTR dsta = nextilong();
1263: regs.v = regs.c = 0;
1264: regs.z = ((WORD)(src)) == 0;
1265: regs.n = ((WORD)(src)) < 0;
1266: put_word(dsta,src);
1267: }}}}}
1268: void op_33e8(UWORD opcode)
1269: {
1270: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1271: {{ CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
1272: WORD src = get_word(srca);
1273: { CPTR dsta = nextilong();
1274: regs.v = regs.c = 0;
1275: regs.z = ((WORD)(src)) == 0;
1276: regs.n = ((WORD)(src)) < 0;
1277: put_word(dsta,src);
1278: }}}}
1279: void op_33f0(UWORD opcode)
1280: {
1281: ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
1282: {{ CPTR srca = regs.a[srcreg];
1283: UWORD srcdp = nextiword();
1284: srca += (LONG)(BYTE)(srcdp & 0xFF);
1285: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
1286: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
1287: srca += srcdpr;
1288: { WORD src = get_word(srca);
1289: { CPTR dsta = nextilong();
1290: regs.v = regs.c = 0;
1291: regs.z = ((WORD)(src)) == 0;
1292: regs.n = ((WORD)(src)) < 0;
1293: put_word(dsta,src);
1294: }}}}}}
1295: void op_33f8(UWORD opcode)
1296: {
1297: {{ CPTR srca = (LONG)(WORD)nextiword();
1298: WORD src = get_word(srca);
1299: { CPTR dsta = nextilong();
1300: regs.v = regs.c = 0;
1301: regs.z = ((WORD)(src)) == 0;
1302: regs.n = ((WORD)(src)) < 0;
1303: put_word(dsta,src);
1304: }}}}
1305: void op_33f9(UWORD opcode)
1306: {
1307: {{ CPTR srca = nextilong();
1308: WORD src = get_word(srca);
1309: { CPTR dsta = nextilong();
1310: regs.v = regs.c = 0;
1311: regs.z = ((WORD)(src)) == 0;
1312: regs.n = ((WORD)(src)) < 0;
1313: put_word(dsta,src);
1314: }}}}
1315: void op_33fa(UWORD opcode)
1316: {
1317: {{ CPTR srca = m68k_getpc();
1318: srca += (LONG)(WORD)nextiword();
1319: { WORD src = get_word(srca);
1320: { CPTR dsta = nextilong();
1321: regs.v = regs.c = 0;
1322: regs.z = ((WORD)(src)) == 0;
1323: regs.n = ((WORD)(src)) < 0;
1324: put_word(dsta,src);
1325: }}}}}
1326: void op_33fb(UWORD opcode)
1327: {
1328: {{ CPTR srca = m68k_getpc();
1329: UWORD srcdp = nextiword();
1330: srca += (LONG)(BYTE)(srcdp & 0xFF);
1331: { ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
1332: if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
1333: srca += srcdpr;
1334: { WORD src = get_word(srca);
1335: { CPTR dsta = nextilong();
1336: regs.v = regs.c = 0;
1337: regs.z = ((WORD)(src)) == 0;
1338: regs.n = ((WORD)(src)) < 0;
1339: put_word(dsta,src);
1340: }}}}}}
1341: void op_33fc(UWORD opcode)
1342: {
1343: {{ WORD src = nextiword();
1344: { CPTR dsta = nextilong();
1345: regs.v = regs.c = 0;
1346: regs.z = ((WORD)(src)) == 0;
1347: regs.n = ((WORD)(src)) < 0;
1348: put_word(dsta,src);
1349: }}}}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.