|
|
1.1 root 1: /*****************************************************************************/
2: /* Generator - Sega Genesis emulation - (c) James Ponder 1997-1998 */
3: /*****************************************************************************/
4: /* */
5: /* cpu68k-3.c */
6: /* */
7: /*****************************************************************************/
8:
9: #include "generator.h"
10: #include "cpu68k.h"
11: #include "mem68k.h"
12: #include "reg68k.h"
13:
14: #include "cpu68k-inline.h"
15:
16: #include <stdio.h>
17:
18: void cpu_op_426a(t_ipc *ipc) /* MOVE */ {
19: /* mask f1f8, bits 3000, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
20: int srcreg = (ipc->opcode >> 0) & 7;
21: uint16 srcdata = DATAREG(srcreg);
22: int dstreg = (ipc->opcode >> 9) & 7;
23: uint16 outdata = srcdata;
24:
25: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
26: PC+= 2;
27: }
28:
29: void cpu_op_426b(t_ipc *ipc) /* MOVE */ {
30: /* mask f1f8, bits 3000, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
31: int srcreg = (ipc->opcode >> 0) & 7;
32: uint16 srcdata = DATAREG(srcreg);
33: int dstreg = (ipc->opcode >> 9) & 7;
34: uint16 outdata = srcdata;
35:
36: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
37:
38: VFLAG = 0;
39: CFLAG = 0;
40: NFLAG = ((sint16)outdata) < 0;
41: ZFLAG = !outdata;
42: PC+= 2;
43: }
44:
45: void cpu_op_427a(t_ipc *ipc) /* MOVE */ {
46: /* mask f1f8, bits 3080, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
47: int srcreg = (ipc->opcode >> 0) & 7;
48: uint16 srcdata = DATAREG(srcreg);
49: int dstreg = (ipc->opcode >> 9) & 7;
50: uint32 dstaddr = ADDRREG(dstreg);
51: uint16 outdata = srcdata;
52:
53: storeword(dstaddr, outdata);
54: PC+= 2;
55: }
56:
57: void cpu_op_427b(t_ipc *ipc) /* MOVE */ {
58: /* mask f1f8, bits 3080, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
59: int srcreg = (ipc->opcode >> 0) & 7;
60: uint16 srcdata = DATAREG(srcreg);
61: int dstreg = (ipc->opcode >> 9) & 7;
62: uint32 dstaddr = ADDRREG(dstreg);
63: uint16 outdata = srcdata;
64:
65: storeword(dstaddr, outdata);
66:
67: VFLAG = 0;
68: CFLAG = 0;
69: NFLAG = ((sint16)outdata) < 0;
70: ZFLAG = !outdata;
71: PC+= 2;
72: }
73:
74: void cpu_op_428a(t_ipc *ipc) /* MOVE */ {
75: /* mask f1f8, bits 30c0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
76: int srcreg = (ipc->opcode >> 0) & 7;
77: uint16 srcdata = DATAREG(srcreg);
78: int dstreg = (ipc->opcode >> 9) & 7;
79: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
80: uint16 outdata = srcdata;
81:
82: storeword(dstaddr, outdata);
83: PC+= 2;
84: }
85:
86: void cpu_op_428b(t_ipc *ipc) /* MOVE */ {
87: /* mask f1f8, bits 30c0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
88: int srcreg = (ipc->opcode >> 0) & 7;
89: uint16 srcdata = DATAREG(srcreg);
90: int dstreg = (ipc->opcode >> 9) & 7;
91: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
92: uint16 outdata = srcdata;
93:
94: storeword(dstaddr, outdata);
95:
96: VFLAG = 0;
97: CFLAG = 0;
98: NFLAG = ((sint16)outdata) < 0;
99: ZFLAG = !outdata;
100: PC+= 2;
101: }
102:
103: void cpu_op_429a(t_ipc *ipc) /* MOVE */ {
104: /* mask f1f8, bits 3100, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
105: int srcreg = (ipc->opcode >> 0) & 7;
106: uint16 srcdata = DATAREG(srcreg);
107: int dstreg = (ipc->opcode >> 9) & 7;
108: uint32 dstaddr = ADDRREG(dstreg)-=2;
109: uint16 outdata = srcdata;
110:
111: storeword(dstaddr, outdata);
112: PC+= 2;
113: }
114:
115: void cpu_op_429b(t_ipc *ipc) /* MOVE */ {
116: /* mask f1f8, bits 3100, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
117: int srcreg = (ipc->opcode >> 0) & 7;
118: uint16 srcdata = DATAREG(srcreg);
119: int dstreg = (ipc->opcode >> 9) & 7;
120: uint32 dstaddr = ADDRREG(dstreg)-=2;
121: uint16 outdata = srcdata;
122:
123: storeword(dstaddr, outdata);
124:
125: VFLAG = 0;
126: CFLAG = 0;
127: NFLAG = ((sint16)outdata) < 0;
128: ZFLAG = !outdata;
129: PC+= 2;
130: }
131:
132: void cpu_op_430a(t_ipc *ipc) /* MOVE */ {
133: /* mask f1f8, bits 3140, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
134: int srcreg = (ipc->opcode >> 0) & 7;
135: uint16 srcdata = DATAREG(srcreg);
136: int dstreg = (ipc->opcode >> 9) & 7;
137: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
138: uint16 outdata = srcdata;
139:
140: storeword(dstaddr, outdata);
141: PC+= 4;
142: }
143:
144: void cpu_op_430b(t_ipc *ipc) /* MOVE */ {
145: /* mask f1f8, bits 3140, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
146: int srcreg = (ipc->opcode >> 0) & 7;
147: uint16 srcdata = DATAREG(srcreg);
148: int dstreg = (ipc->opcode >> 9) & 7;
149: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
150: uint16 outdata = srcdata;
151:
152: storeword(dstaddr, outdata);
153:
154: VFLAG = 0;
155: CFLAG = 0;
156: NFLAG = ((sint16)outdata) < 0;
157: ZFLAG = !outdata;
158: PC+= 4;
159: }
160:
161: void cpu_op_431a(t_ipc *ipc) /* MOVE */ {
162: /* mask f1f8, bits 3180, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
163: int srcreg = (ipc->opcode >> 0) & 7;
164: uint16 srcdata = DATAREG(srcreg);
165: int dstreg = (ipc->opcode >> 9) & 7;
166: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
167: uint16 outdata = srcdata;
168:
169: storeword(dstaddr, outdata);
170: PC+= 4;
171: }
172:
173: void cpu_op_431b(t_ipc *ipc) /* MOVE */ {
174: /* mask f1f8, bits 3180, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
175: int srcreg = (ipc->opcode >> 0) & 7;
176: uint16 srcdata = DATAREG(srcreg);
177: int dstreg = (ipc->opcode >> 9) & 7;
178: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
179: uint16 outdata = srcdata;
180:
181: storeword(dstaddr, outdata);
182:
183: VFLAG = 0;
184: CFLAG = 0;
185: NFLAG = ((sint16)outdata) < 0;
186: ZFLAG = !outdata;
187: PC+= 4;
188: }
189:
190: void cpu_op_432a(t_ipc *ipc) /* MOVE */ {
191: /* mask fff8, bits 31c0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
192: int srcreg = (ipc->opcode >> 0) & 7;
193: uint16 srcdata = DATAREG(srcreg);
194: uint32 dstaddr = ipc->dst;
195: uint16 outdata = srcdata;
196:
197: storeword(dstaddr, outdata);
198: PC+= 4;
199: }
200:
201: void cpu_op_432b(t_ipc *ipc) /* MOVE */ {
202: /* mask fff8, bits 31c0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
203: int srcreg = (ipc->opcode >> 0) & 7;
204: uint16 srcdata = DATAREG(srcreg);
205: uint32 dstaddr = ipc->dst;
206: uint16 outdata = srcdata;
207:
208: storeword(dstaddr, outdata);
209:
210: VFLAG = 0;
211: CFLAG = 0;
212: NFLAG = ((sint16)outdata) < 0;
213: ZFLAG = !outdata;
214: PC+= 4;
215: }
216:
217: void cpu_op_433a(t_ipc *ipc) /* MOVE */ {
218: /* mask fff8, bits 33c0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
219: int srcreg = (ipc->opcode >> 0) & 7;
220: uint16 srcdata = DATAREG(srcreg);
221: uint32 dstaddr = ipc->dst;
222: uint16 outdata = srcdata;
223:
224: storeword(dstaddr, outdata);
225: PC+= 6;
226: }
227:
228: void cpu_op_433b(t_ipc *ipc) /* MOVE */ {
229: /* mask fff8, bits 33c0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 0, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
230: int srcreg = (ipc->opcode >> 0) & 7;
231: uint16 srcdata = DATAREG(srcreg);
232: uint32 dstaddr = ipc->dst;
233: uint16 outdata = srcdata;
234:
235: storeword(dstaddr, outdata);
236:
237: VFLAG = 0;
238: CFLAG = 0;
239: NFLAG = ((sint16)outdata) < 0;
240: ZFLAG = !outdata;
241: PC+= 6;
242: }
243:
244: void cpu_op_434a(t_ipc *ipc) /* MOVE */ {
245: /* mask f1f8, bits 3008, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
246: int srcreg = (ipc->opcode >> 0) & 7;
247: uint16 srcdata = ADDRREG(srcreg);
248: int dstreg = (ipc->opcode >> 9) & 7;
249: uint16 outdata = srcdata;
250:
251: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
252: PC+= 2;
253: }
254:
255: void cpu_op_434b(t_ipc *ipc) /* MOVE */ {
256: /* mask f1f8, bits 3008, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
257: int srcreg = (ipc->opcode >> 0) & 7;
258: uint16 srcdata = ADDRREG(srcreg);
259: int dstreg = (ipc->opcode >> 9) & 7;
260: uint16 outdata = srcdata;
261:
262: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
263:
264: VFLAG = 0;
265: CFLAG = 0;
266: NFLAG = ((sint16)outdata) < 0;
267: ZFLAG = !outdata;
268: PC+= 2;
269: }
270:
271: void cpu_op_435a(t_ipc *ipc) /* MOVE */ {
272: /* mask f1f8, bits 3088, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
273: int srcreg = (ipc->opcode >> 0) & 7;
274: uint16 srcdata = ADDRREG(srcreg);
275: int dstreg = (ipc->opcode >> 9) & 7;
276: uint32 dstaddr = ADDRREG(dstreg);
277: uint16 outdata = srcdata;
278:
279: storeword(dstaddr, outdata);
280: PC+= 2;
281: }
282:
283: void cpu_op_435b(t_ipc *ipc) /* MOVE */ {
284: /* mask f1f8, bits 3088, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
285: int srcreg = (ipc->opcode >> 0) & 7;
286: uint16 srcdata = ADDRREG(srcreg);
287: int dstreg = (ipc->opcode >> 9) & 7;
288: uint32 dstaddr = ADDRREG(dstreg);
289: uint16 outdata = srcdata;
290:
291: storeword(dstaddr, outdata);
292:
293: VFLAG = 0;
294: CFLAG = 0;
295: NFLAG = ((sint16)outdata) < 0;
296: ZFLAG = !outdata;
297: PC+= 2;
298: }
299:
300: void cpu_op_436a(t_ipc *ipc) /* MOVE */ {
301: /* mask f1f8, bits 30c8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
302: int srcreg = (ipc->opcode >> 0) & 7;
303: uint16 srcdata = ADDRREG(srcreg);
304: int dstreg = (ipc->opcode >> 9) & 7;
305: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
306: uint16 outdata = srcdata;
307:
308: storeword(dstaddr, outdata);
309: PC+= 2;
310: }
311:
312: void cpu_op_436b(t_ipc *ipc) /* MOVE */ {
313: /* mask f1f8, bits 30c8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
314: int srcreg = (ipc->opcode >> 0) & 7;
315: uint16 srcdata = ADDRREG(srcreg);
316: int dstreg = (ipc->opcode >> 9) & 7;
317: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
318: uint16 outdata = srcdata;
319:
320: storeword(dstaddr, outdata);
321:
322: VFLAG = 0;
323: CFLAG = 0;
324: NFLAG = ((sint16)outdata) < 0;
325: ZFLAG = !outdata;
326: PC+= 2;
327: }
328:
329: void cpu_op_437a(t_ipc *ipc) /* MOVE */ {
330: /* mask f1f8, bits 3108, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
331: int srcreg = (ipc->opcode >> 0) & 7;
332: uint16 srcdata = ADDRREG(srcreg);
333: int dstreg = (ipc->opcode >> 9) & 7;
334: uint32 dstaddr = ADDRREG(dstreg)-=2;
335: uint16 outdata = srcdata;
336:
337: storeword(dstaddr, outdata);
338: PC+= 2;
339: }
340:
341: void cpu_op_437b(t_ipc *ipc) /* MOVE */ {
342: /* mask f1f8, bits 3108, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
343: int srcreg = (ipc->opcode >> 0) & 7;
344: uint16 srcdata = ADDRREG(srcreg);
345: int dstreg = (ipc->opcode >> 9) & 7;
346: uint32 dstaddr = ADDRREG(dstreg)-=2;
347: uint16 outdata = srcdata;
348:
349: storeword(dstaddr, outdata);
350:
351: VFLAG = 0;
352: CFLAG = 0;
353: NFLAG = ((sint16)outdata) < 0;
354: ZFLAG = !outdata;
355: PC+= 2;
356: }
357:
358: void cpu_op_438a(t_ipc *ipc) /* MOVE */ {
359: /* mask f1f8, bits 3148, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
360: int srcreg = (ipc->opcode >> 0) & 7;
361: uint16 srcdata = ADDRREG(srcreg);
362: int dstreg = (ipc->opcode >> 9) & 7;
363: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
364: uint16 outdata = srcdata;
365:
366: storeword(dstaddr, outdata);
367: PC+= 4;
368: }
369:
370: void cpu_op_438b(t_ipc *ipc) /* MOVE */ {
371: /* mask f1f8, bits 3148, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
372: int srcreg = (ipc->opcode >> 0) & 7;
373: uint16 srcdata = ADDRREG(srcreg);
374: int dstreg = (ipc->opcode >> 9) & 7;
375: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
376: uint16 outdata = srcdata;
377:
378: storeword(dstaddr, outdata);
379:
380: VFLAG = 0;
381: CFLAG = 0;
382: NFLAG = ((sint16)outdata) < 0;
383: ZFLAG = !outdata;
384: PC+= 4;
385: }
386:
387: void cpu_op_439a(t_ipc *ipc) /* MOVE */ {
388: /* mask f1f8, bits 3188, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
389: int srcreg = (ipc->opcode >> 0) & 7;
390: uint16 srcdata = ADDRREG(srcreg);
391: int dstreg = (ipc->opcode >> 9) & 7;
392: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
393: uint16 outdata = srcdata;
394:
395: storeword(dstaddr, outdata);
396: PC+= 4;
397: }
398:
399: void cpu_op_439b(t_ipc *ipc) /* MOVE */ {
400: /* mask f1f8, bits 3188, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
401: int srcreg = (ipc->opcode >> 0) & 7;
402: uint16 srcdata = ADDRREG(srcreg);
403: int dstreg = (ipc->opcode >> 9) & 7;
404: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
405: uint16 outdata = srcdata;
406:
407: storeword(dstaddr, outdata);
408:
409: VFLAG = 0;
410: CFLAG = 0;
411: NFLAG = ((sint16)outdata) < 0;
412: ZFLAG = !outdata;
413: PC+= 4;
414: }
415:
416: void cpu_op_440a(t_ipc *ipc) /* MOVE */ {
417: /* mask fff8, bits 31c8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
418: int srcreg = (ipc->opcode >> 0) & 7;
419: uint16 srcdata = ADDRREG(srcreg);
420: uint32 dstaddr = ipc->dst;
421: uint16 outdata = srcdata;
422:
423: storeword(dstaddr, outdata);
424: PC+= 4;
425: }
426:
427: void cpu_op_440b(t_ipc *ipc) /* MOVE */ {
428: /* mask fff8, bits 31c8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
429: int srcreg = (ipc->opcode >> 0) & 7;
430: uint16 srcdata = ADDRREG(srcreg);
431: uint32 dstaddr = ipc->dst;
432: uint16 outdata = srcdata;
433:
434: storeword(dstaddr, outdata);
435:
436: VFLAG = 0;
437: CFLAG = 0;
438: NFLAG = ((sint16)outdata) < 0;
439: ZFLAG = !outdata;
440: PC+= 4;
441: }
442:
443: void cpu_op_441a(t_ipc *ipc) /* MOVE */ {
444: /* mask fff8, bits 33c8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
445: int srcreg = (ipc->opcode >> 0) & 7;
446: uint16 srcdata = ADDRREG(srcreg);
447: uint32 dstaddr = ipc->dst;
448: uint16 outdata = srcdata;
449:
450: storeword(dstaddr, outdata);
451: PC+= 6;
452: }
453:
454: void cpu_op_441b(t_ipc *ipc) /* MOVE */ {
455: /* mask fff8, bits 33c8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 1, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
456: int srcreg = (ipc->opcode >> 0) & 7;
457: uint16 srcdata = ADDRREG(srcreg);
458: uint32 dstaddr = ipc->dst;
459: uint16 outdata = srcdata;
460:
461: storeword(dstaddr, outdata);
462:
463: VFLAG = 0;
464: CFLAG = 0;
465: NFLAG = ((sint16)outdata) < 0;
466: ZFLAG = !outdata;
467: PC+= 6;
468: }
469:
470: void cpu_op_442a(t_ipc *ipc) /* MOVE */ {
471: /* mask f1f8, bits 3010, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
472: int srcreg = (ipc->opcode >> 0) & 7;
473: uint32 srcaddr = ADDRREG(srcreg);
474: uint16 srcdata = fetchword(srcaddr);
475: int dstreg = (ipc->opcode >> 9) & 7;
476: uint16 outdata = srcdata;
477:
478: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
479: PC+= 2;
480: }
481:
482: void cpu_op_442b(t_ipc *ipc) /* MOVE */ {
483: /* mask f1f8, bits 3010, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
484: int srcreg = (ipc->opcode >> 0) & 7;
485: uint32 srcaddr = ADDRREG(srcreg);
486: uint16 srcdata = fetchword(srcaddr);
487: int dstreg = (ipc->opcode >> 9) & 7;
488: uint16 outdata = srcdata;
489:
490: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
491:
492: VFLAG = 0;
493: CFLAG = 0;
494: NFLAG = ((sint16)outdata) < 0;
495: ZFLAG = !outdata;
496: PC+= 2;
497: }
498:
499: void cpu_op_443a(t_ipc *ipc) /* MOVE */ {
500: /* mask f1f8, bits 3090, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
501: int srcreg = (ipc->opcode >> 0) & 7;
502: uint32 srcaddr = ADDRREG(srcreg);
503: uint16 srcdata = fetchword(srcaddr);
504: int dstreg = (ipc->opcode >> 9) & 7;
505: uint32 dstaddr = ADDRREG(dstreg);
506: uint16 outdata = srcdata;
507:
508: storeword(dstaddr, outdata);
509: PC+= 2;
510: }
511:
512: void cpu_op_443b(t_ipc *ipc) /* MOVE */ {
513: /* mask f1f8, bits 3090, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
514: int srcreg = (ipc->opcode >> 0) & 7;
515: uint32 srcaddr = ADDRREG(srcreg);
516: uint16 srcdata = fetchword(srcaddr);
517: int dstreg = (ipc->opcode >> 9) & 7;
518: uint32 dstaddr = ADDRREG(dstreg);
519: uint16 outdata = srcdata;
520:
521: storeword(dstaddr, outdata);
522:
523: VFLAG = 0;
524: CFLAG = 0;
525: NFLAG = ((sint16)outdata) < 0;
526: ZFLAG = !outdata;
527: PC+= 2;
528: }
529:
530: void cpu_op_444a(t_ipc *ipc) /* MOVE */ {
531: /* mask f1f8, bits 30d0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
532: int srcreg = (ipc->opcode >> 0) & 7;
533: uint32 srcaddr = ADDRREG(srcreg);
534: uint16 srcdata = fetchword(srcaddr);
535: int dstreg = (ipc->opcode >> 9) & 7;
536: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
537: uint16 outdata = srcdata;
538:
539: storeword(dstaddr, outdata);
540: PC+= 2;
541: }
542:
543: void cpu_op_444b(t_ipc *ipc) /* MOVE */ {
544: /* mask f1f8, bits 30d0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
545: int srcreg = (ipc->opcode >> 0) & 7;
546: uint32 srcaddr = ADDRREG(srcreg);
547: uint16 srcdata = fetchword(srcaddr);
548: int dstreg = (ipc->opcode >> 9) & 7;
549: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
550: uint16 outdata = srcdata;
551:
552: storeword(dstaddr, outdata);
553:
554: VFLAG = 0;
555: CFLAG = 0;
556: NFLAG = ((sint16)outdata) < 0;
557: ZFLAG = !outdata;
558: PC+= 2;
559: }
560:
561: void cpu_op_445a(t_ipc *ipc) /* MOVE */ {
562: /* mask f1f8, bits 3110, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
563: int srcreg = (ipc->opcode >> 0) & 7;
564: uint32 srcaddr = ADDRREG(srcreg);
565: uint16 srcdata = fetchword(srcaddr);
566: int dstreg = (ipc->opcode >> 9) & 7;
567: uint32 dstaddr = ADDRREG(dstreg)-=2;
568: uint16 outdata = srcdata;
569:
570: storeword(dstaddr, outdata);
571: PC+= 2;
572: }
573:
574: void cpu_op_445b(t_ipc *ipc) /* MOVE */ {
575: /* mask f1f8, bits 3110, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
576: int srcreg = (ipc->opcode >> 0) & 7;
577: uint32 srcaddr = ADDRREG(srcreg);
578: uint16 srcdata = fetchword(srcaddr);
579: int dstreg = (ipc->opcode >> 9) & 7;
580: uint32 dstaddr = ADDRREG(dstreg)-=2;
581: uint16 outdata = srcdata;
582:
583: storeword(dstaddr, outdata);
584:
585: VFLAG = 0;
586: CFLAG = 0;
587: NFLAG = ((sint16)outdata) < 0;
588: ZFLAG = !outdata;
589: PC+= 2;
590: }
591:
592: void cpu_op_446a(t_ipc *ipc) /* MOVE */ {
593: /* mask f1f8, bits 3150, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
594: int srcreg = (ipc->opcode >> 0) & 7;
595: uint32 srcaddr = ADDRREG(srcreg);
596: uint16 srcdata = fetchword(srcaddr);
597: int dstreg = (ipc->opcode >> 9) & 7;
598: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
599: uint16 outdata = srcdata;
600:
601: storeword(dstaddr, outdata);
602: PC+= 4;
603: }
604:
605: void cpu_op_446b(t_ipc *ipc) /* MOVE */ {
606: /* mask f1f8, bits 3150, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
607: int srcreg = (ipc->opcode >> 0) & 7;
608: uint32 srcaddr = ADDRREG(srcreg);
609: uint16 srcdata = fetchword(srcaddr);
610: int dstreg = (ipc->opcode >> 9) & 7;
611: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
612: uint16 outdata = srcdata;
613:
614: storeword(dstaddr, outdata);
615:
616: VFLAG = 0;
617: CFLAG = 0;
618: NFLAG = ((sint16)outdata) < 0;
619: ZFLAG = !outdata;
620: PC+= 4;
621: }
622:
623: void cpu_op_447a(t_ipc *ipc) /* MOVE */ {
624: /* mask f1f8, bits 3190, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
625: int srcreg = (ipc->opcode >> 0) & 7;
626: uint32 srcaddr = ADDRREG(srcreg);
627: uint16 srcdata = fetchword(srcaddr);
628: int dstreg = (ipc->opcode >> 9) & 7;
629: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
630: uint16 outdata = srcdata;
631:
632: storeword(dstaddr, outdata);
633: PC+= 4;
634: }
635:
636: void cpu_op_447b(t_ipc *ipc) /* MOVE */ {
637: /* mask f1f8, bits 3190, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
638: int srcreg = (ipc->opcode >> 0) & 7;
639: uint32 srcaddr = ADDRREG(srcreg);
640: uint16 srcdata = fetchword(srcaddr);
641: int dstreg = (ipc->opcode >> 9) & 7;
642: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
643: uint16 outdata = srcdata;
644:
645: storeword(dstaddr, outdata);
646:
647: VFLAG = 0;
648: CFLAG = 0;
649: NFLAG = ((sint16)outdata) < 0;
650: ZFLAG = !outdata;
651: PC+= 4;
652: }
653:
654: void cpu_op_448a(t_ipc *ipc) /* MOVE */ {
655: /* mask fff8, bits 31d0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
656: int srcreg = (ipc->opcode >> 0) & 7;
657: uint32 srcaddr = ADDRREG(srcreg);
658: uint16 srcdata = fetchword(srcaddr);
659: uint32 dstaddr = ipc->dst;
660: uint16 outdata = srcdata;
661:
662: storeword(dstaddr, outdata);
663: PC+= 4;
664: }
665:
666: void cpu_op_448b(t_ipc *ipc) /* MOVE */ {
667: /* mask fff8, bits 31d0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
668: int srcreg = (ipc->opcode >> 0) & 7;
669: uint32 srcaddr = ADDRREG(srcreg);
670: uint16 srcdata = fetchword(srcaddr);
671: uint32 dstaddr = ipc->dst;
672: uint16 outdata = srcdata;
673:
674: storeword(dstaddr, outdata);
675:
676: VFLAG = 0;
677: CFLAG = 0;
678: NFLAG = ((sint16)outdata) < 0;
679: ZFLAG = !outdata;
680: PC+= 4;
681: }
682:
683: void cpu_op_449a(t_ipc *ipc) /* MOVE */ {
684: /* mask fff8, bits 33d0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
685: int srcreg = (ipc->opcode >> 0) & 7;
686: uint32 srcaddr = ADDRREG(srcreg);
687: uint16 srcdata = fetchword(srcaddr);
688: uint32 dstaddr = ipc->dst;
689: uint16 outdata = srcdata;
690:
691: storeword(dstaddr, outdata);
692: PC+= 6;
693: }
694:
695: void cpu_op_449b(t_ipc *ipc) /* MOVE */ {
696: /* mask fff8, bits 33d0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 2, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
697: int srcreg = (ipc->opcode >> 0) & 7;
698: uint32 srcaddr = ADDRREG(srcreg);
699: uint16 srcdata = fetchword(srcaddr);
700: uint32 dstaddr = ipc->dst;
701: uint16 outdata = srcdata;
702:
703: storeword(dstaddr, outdata);
704:
705: VFLAG = 0;
706: CFLAG = 0;
707: NFLAG = ((sint16)outdata) < 0;
708: ZFLAG = !outdata;
709: PC+= 6;
710: }
711:
712: void cpu_op_450a(t_ipc *ipc) /* MOVE */ {
713: /* mask f1f8, bits 3018, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
714: int srcreg = (ipc->opcode >> 0) & 7;
715: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
716: uint16 srcdata = fetchword(srcaddr);
717: int dstreg = (ipc->opcode >> 9) & 7;
718: uint16 outdata = srcdata;
719:
720: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
721: PC+= 2;
722: }
723:
724: void cpu_op_450b(t_ipc *ipc) /* MOVE */ {
725: /* mask f1f8, bits 3018, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
726: int srcreg = (ipc->opcode >> 0) & 7;
727: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
728: uint16 srcdata = fetchword(srcaddr);
729: int dstreg = (ipc->opcode >> 9) & 7;
730: uint16 outdata = srcdata;
731:
732: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
733:
734: VFLAG = 0;
735: CFLAG = 0;
736: NFLAG = ((sint16)outdata) < 0;
737: ZFLAG = !outdata;
738: PC+= 2;
739: }
740:
741: void cpu_op_451a(t_ipc *ipc) /* MOVE */ {
742: /* mask f1f8, bits 3098, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
743: int srcreg = (ipc->opcode >> 0) & 7;
744: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
745: uint16 srcdata = fetchword(srcaddr);
746: int dstreg = (ipc->opcode >> 9) & 7;
747: uint32 dstaddr = ADDRREG(dstreg);
748: uint16 outdata = srcdata;
749:
750: storeword(dstaddr, outdata);
751: PC+= 2;
752: }
753:
754: void cpu_op_451b(t_ipc *ipc) /* MOVE */ {
755: /* mask f1f8, bits 3098, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
756: int srcreg = (ipc->opcode >> 0) & 7;
757: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
758: uint16 srcdata = fetchword(srcaddr);
759: int dstreg = (ipc->opcode >> 9) & 7;
760: uint32 dstaddr = ADDRREG(dstreg);
761: uint16 outdata = srcdata;
762:
763: storeword(dstaddr, outdata);
764:
765: VFLAG = 0;
766: CFLAG = 0;
767: NFLAG = ((sint16)outdata) < 0;
768: ZFLAG = !outdata;
769: PC+= 2;
770: }
771:
772: void cpu_op_452a(t_ipc *ipc) /* MOVE */ {
773: /* mask f1f8, bits 30d8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
774: int srcreg = (ipc->opcode >> 0) & 7;
775: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
776: uint16 srcdata = fetchword(srcaddr);
777: int dstreg = (ipc->opcode >> 9) & 7;
778: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
779: uint16 outdata = srcdata;
780:
781: storeword(dstaddr, outdata);
782: PC+= 2;
783: }
784:
785: void cpu_op_452b(t_ipc *ipc) /* MOVE */ {
786: /* mask f1f8, bits 30d8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
787: int srcreg = (ipc->opcode >> 0) & 7;
788: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
789: uint16 srcdata = fetchword(srcaddr);
790: int dstreg = (ipc->opcode >> 9) & 7;
791: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
792: uint16 outdata = srcdata;
793:
794: storeword(dstaddr, outdata);
795:
796: VFLAG = 0;
797: CFLAG = 0;
798: NFLAG = ((sint16)outdata) < 0;
799: ZFLAG = !outdata;
800: PC+= 2;
801: }
802:
803: void cpu_op_453a(t_ipc *ipc) /* MOVE */ {
804: /* mask f1f8, bits 3118, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
805: int srcreg = (ipc->opcode >> 0) & 7;
806: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
807: uint16 srcdata = fetchword(srcaddr);
808: int dstreg = (ipc->opcode >> 9) & 7;
809: uint32 dstaddr = ADDRREG(dstreg)-=2;
810: uint16 outdata = srcdata;
811:
812: storeword(dstaddr, outdata);
813: PC+= 2;
814: }
815:
816: void cpu_op_453b(t_ipc *ipc) /* MOVE */ {
817: /* mask f1f8, bits 3118, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
818: int srcreg = (ipc->opcode >> 0) & 7;
819: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
820: uint16 srcdata = fetchword(srcaddr);
821: int dstreg = (ipc->opcode >> 9) & 7;
822: uint32 dstaddr = ADDRREG(dstreg)-=2;
823: uint16 outdata = srcdata;
824:
825: storeword(dstaddr, outdata);
826:
827: VFLAG = 0;
828: CFLAG = 0;
829: NFLAG = ((sint16)outdata) < 0;
830: ZFLAG = !outdata;
831: PC+= 2;
832: }
833:
834: void cpu_op_454a(t_ipc *ipc) /* MOVE */ {
835: /* mask f1f8, bits 3158, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
836: int srcreg = (ipc->opcode >> 0) & 7;
837: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
838: uint16 srcdata = fetchword(srcaddr);
839: int dstreg = (ipc->opcode >> 9) & 7;
840: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
841: uint16 outdata = srcdata;
842:
843: storeword(dstaddr, outdata);
844: PC+= 4;
845: }
846:
847: void cpu_op_454b(t_ipc *ipc) /* MOVE */ {
848: /* mask f1f8, bits 3158, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
849: int srcreg = (ipc->opcode >> 0) & 7;
850: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
851: uint16 srcdata = fetchword(srcaddr);
852: int dstreg = (ipc->opcode >> 9) & 7;
853: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
854: uint16 outdata = srcdata;
855:
856: storeword(dstaddr, outdata);
857:
858: VFLAG = 0;
859: CFLAG = 0;
860: NFLAG = ((sint16)outdata) < 0;
861: ZFLAG = !outdata;
862: PC+= 4;
863: }
864:
865: void cpu_op_455a(t_ipc *ipc) /* MOVE */ {
866: /* mask f1f8, bits 3198, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
867: int srcreg = (ipc->opcode >> 0) & 7;
868: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
869: uint16 srcdata = fetchword(srcaddr);
870: int dstreg = (ipc->opcode >> 9) & 7;
871: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
872: uint16 outdata = srcdata;
873:
874: storeword(dstaddr, outdata);
875: PC+= 4;
876: }
877:
878: void cpu_op_455b(t_ipc *ipc) /* MOVE */ {
879: /* mask f1f8, bits 3198, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
880: int srcreg = (ipc->opcode >> 0) & 7;
881: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
882: uint16 srcdata = fetchword(srcaddr);
883: int dstreg = (ipc->opcode >> 9) & 7;
884: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
885: uint16 outdata = srcdata;
886:
887: storeword(dstaddr, outdata);
888:
889: VFLAG = 0;
890: CFLAG = 0;
891: NFLAG = ((sint16)outdata) < 0;
892: ZFLAG = !outdata;
893: PC+= 4;
894: }
895:
896: void cpu_op_456a(t_ipc *ipc) /* MOVE */ {
897: /* mask fff8, bits 31d8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
898: int srcreg = (ipc->opcode >> 0) & 7;
899: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
900: uint16 srcdata = fetchword(srcaddr);
901: uint32 dstaddr = ipc->dst;
902: uint16 outdata = srcdata;
903:
904: storeword(dstaddr, outdata);
905: PC+= 4;
906: }
907:
908: void cpu_op_456b(t_ipc *ipc) /* MOVE */ {
909: /* mask fff8, bits 31d8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
910: int srcreg = (ipc->opcode >> 0) & 7;
911: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
912: uint16 srcdata = fetchword(srcaddr);
913: uint32 dstaddr = ipc->dst;
914: uint16 outdata = srcdata;
915:
916: storeword(dstaddr, outdata);
917:
918: VFLAG = 0;
919: CFLAG = 0;
920: NFLAG = ((sint16)outdata) < 0;
921: ZFLAG = !outdata;
922: PC+= 4;
923: }
924:
925: void cpu_op_457a(t_ipc *ipc) /* MOVE */ {
926: /* mask fff8, bits 33d8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
927: int srcreg = (ipc->opcode >> 0) & 7;
928: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
929: uint16 srcdata = fetchword(srcaddr);
930: uint32 dstaddr = ipc->dst;
931: uint16 outdata = srcdata;
932:
933: storeword(dstaddr, outdata);
934: PC+= 6;
935: }
936:
937: void cpu_op_457b(t_ipc *ipc) /* MOVE */ {
938: /* mask fff8, bits 33d8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 3, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
939: int srcreg = (ipc->opcode >> 0) & 7;
940: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
941: uint16 srcdata = fetchword(srcaddr);
942: uint32 dstaddr = ipc->dst;
943: uint16 outdata = srcdata;
944:
945: storeword(dstaddr, outdata);
946:
947: VFLAG = 0;
948: CFLAG = 0;
949: NFLAG = ((sint16)outdata) < 0;
950: ZFLAG = !outdata;
951: PC+= 6;
952: }
953:
954: void cpu_op_458a(t_ipc *ipc) /* MOVE */ {
955: /* mask f1f8, bits 3020, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
956: int srcreg = (ipc->opcode >> 0) & 7;
957: uint32 srcaddr = ADDRREG(srcreg)-=2;
958: uint16 srcdata = fetchword(srcaddr);
959: int dstreg = (ipc->opcode >> 9) & 7;
960: uint16 outdata = srcdata;
961:
962: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
963: PC+= 2;
964: }
965:
966: void cpu_op_458b(t_ipc *ipc) /* MOVE */ {
967: /* mask f1f8, bits 3020, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
968: int srcreg = (ipc->opcode >> 0) & 7;
969: uint32 srcaddr = ADDRREG(srcreg)-=2;
970: uint16 srcdata = fetchword(srcaddr);
971: int dstreg = (ipc->opcode >> 9) & 7;
972: uint16 outdata = srcdata;
973:
974: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
975:
976: VFLAG = 0;
977: CFLAG = 0;
978: NFLAG = ((sint16)outdata) < 0;
979: ZFLAG = !outdata;
980: PC+= 2;
981: }
982:
983: void cpu_op_459a(t_ipc *ipc) /* MOVE */ {
984: /* mask f1f8, bits 30a0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
985: int srcreg = (ipc->opcode >> 0) & 7;
986: uint32 srcaddr = ADDRREG(srcreg)-=2;
987: uint16 srcdata = fetchword(srcaddr);
988: int dstreg = (ipc->opcode >> 9) & 7;
989: uint32 dstaddr = ADDRREG(dstreg);
990: uint16 outdata = srcdata;
991:
992: storeword(dstaddr, outdata);
993: PC+= 2;
994: }
995:
996: void cpu_op_459b(t_ipc *ipc) /* MOVE */ {
997: /* mask f1f8, bits 30a0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
998: int srcreg = (ipc->opcode >> 0) & 7;
999: uint32 srcaddr = ADDRREG(srcreg)-=2;
1000: uint16 srcdata = fetchword(srcaddr);
1001: int dstreg = (ipc->opcode >> 9) & 7;
1002: uint32 dstaddr = ADDRREG(dstreg);
1003: uint16 outdata = srcdata;
1004:
1005: storeword(dstaddr, outdata);
1006:
1007: VFLAG = 0;
1008: CFLAG = 0;
1009: NFLAG = ((sint16)outdata) < 0;
1010: ZFLAG = !outdata;
1011: PC+= 2;
1012: }
1013:
1014: void cpu_op_460a(t_ipc *ipc) /* MOVE */ {
1015: /* mask f1f8, bits 30e0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
1016: int srcreg = (ipc->opcode >> 0) & 7;
1017: uint32 srcaddr = ADDRREG(srcreg)-=2;
1018: uint16 srcdata = fetchword(srcaddr);
1019: int dstreg = (ipc->opcode >> 9) & 7;
1020: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
1021: uint16 outdata = srcdata;
1022:
1023: storeword(dstaddr, outdata);
1024: PC+= 2;
1025: }
1026:
1027: void cpu_op_460b(t_ipc *ipc) /* MOVE */ {
1028: /* mask f1f8, bits 30e0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
1029: int srcreg = (ipc->opcode >> 0) & 7;
1030: uint32 srcaddr = ADDRREG(srcreg)-=2;
1031: uint16 srcdata = fetchword(srcaddr);
1032: int dstreg = (ipc->opcode >> 9) & 7;
1033: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
1034: uint16 outdata = srcdata;
1035:
1036: storeword(dstaddr, outdata);
1037:
1038: VFLAG = 0;
1039: CFLAG = 0;
1040: NFLAG = ((sint16)outdata) < 0;
1041: ZFLAG = !outdata;
1042: PC+= 2;
1043: }
1044:
1045: void cpu_op_461a(t_ipc *ipc) /* MOVE */ {
1046: /* mask f1f8, bits 3120, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
1047: int srcreg = (ipc->opcode >> 0) & 7;
1048: uint32 srcaddr = ADDRREG(srcreg)-=2;
1049: uint16 srcdata = fetchword(srcaddr);
1050: int dstreg = (ipc->opcode >> 9) & 7;
1051: uint32 dstaddr = ADDRREG(dstreg)-=2;
1052: uint16 outdata = srcdata;
1053:
1054: storeword(dstaddr, outdata);
1055: PC+= 2;
1056: }
1057:
1058: void cpu_op_461b(t_ipc *ipc) /* MOVE */ {
1059: /* mask f1f8, bits 3120, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
1060: int srcreg = (ipc->opcode >> 0) & 7;
1061: uint32 srcaddr = ADDRREG(srcreg)-=2;
1062: uint16 srcdata = fetchword(srcaddr);
1063: int dstreg = (ipc->opcode >> 9) & 7;
1064: uint32 dstaddr = ADDRREG(dstreg)-=2;
1065: uint16 outdata = srcdata;
1066:
1067: storeword(dstaddr, outdata);
1068:
1069: VFLAG = 0;
1070: CFLAG = 0;
1071: NFLAG = ((sint16)outdata) < 0;
1072: ZFLAG = !outdata;
1073: PC+= 2;
1074: }
1075:
1076: void cpu_op_462a(t_ipc *ipc) /* MOVE */ {
1077: /* mask f1f8, bits 3160, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
1078: int srcreg = (ipc->opcode >> 0) & 7;
1079: uint32 srcaddr = ADDRREG(srcreg)-=2;
1080: uint16 srcdata = fetchword(srcaddr);
1081: int dstreg = (ipc->opcode >> 9) & 7;
1082: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
1083: uint16 outdata = srcdata;
1084:
1085: storeword(dstaddr, outdata);
1086: PC+= 4;
1087: }
1088:
1089: void cpu_op_462b(t_ipc *ipc) /* MOVE */ {
1090: /* mask f1f8, bits 3160, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
1091: int srcreg = (ipc->opcode >> 0) & 7;
1092: uint32 srcaddr = ADDRREG(srcreg)-=2;
1093: uint16 srcdata = fetchword(srcaddr);
1094: int dstreg = (ipc->opcode >> 9) & 7;
1095: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
1096: uint16 outdata = srcdata;
1097:
1098: storeword(dstaddr, outdata);
1099:
1100: VFLAG = 0;
1101: CFLAG = 0;
1102: NFLAG = ((sint16)outdata) < 0;
1103: ZFLAG = !outdata;
1104: PC+= 4;
1105: }
1106:
1107: void cpu_op_463a(t_ipc *ipc) /* MOVE */ {
1108: /* mask f1f8, bits 31a0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
1109: int srcreg = (ipc->opcode >> 0) & 7;
1110: uint32 srcaddr = ADDRREG(srcreg)-=2;
1111: uint16 srcdata = fetchword(srcaddr);
1112: int dstreg = (ipc->opcode >> 9) & 7;
1113: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
1114: uint16 outdata = srcdata;
1115:
1116: storeword(dstaddr, outdata);
1117: PC+= 4;
1118: }
1119:
1120: void cpu_op_463b(t_ipc *ipc) /* MOVE */ {
1121: /* mask f1f8, bits 31a0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
1122: int srcreg = (ipc->opcode >> 0) & 7;
1123: uint32 srcaddr = ADDRREG(srcreg)-=2;
1124: uint16 srcdata = fetchword(srcaddr);
1125: int dstreg = (ipc->opcode >> 9) & 7;
1126: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
1127: uint16 outdata = srcdata;
1128:
1129: storeword(dstaddr, outdata);
1130:
1131: VFLAG = 0;
1132: CFLAG = 0;
1133: NFLAG = ((sint16)outdata) < 0;
1134: ZFLAG = !outdata;
1135: PC+= 4;
1136: }
1137:
1138: void cpu_op_464a(t_ipc *ipc) /* MOVE */ {
1139: /* mask fff8, bits 31e0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
1140: int srcreg = (ipc->opcode >> 0) & 7;
1141: uint32 srcaddr = ADDRREG(srcreg)-=2;
1142: uint16 srcdata = fetchword(srcaddr);
1143: uint32 dstaddr = ipc->dst;
1144: uint16 outdata = srcdata;
1145:
1146: storeword(dstaddr, outdata);
1147: PC+= 4;
1148: }
1149:
1150: void cpu_op_464b(t_ipc *ipc) /* MOVE */ {
1151: /* mask fff8, bits 31e0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
1152: int srcreg = (ipc->opcode >> 0) & 7;
1153: uint32 srcaddr = ADDRREG(srcreg)-=2;
1154: uint16 srcdata = fetchword(srcaddr);
1155: uint32 dstaddr = ipc->dst;
1156: uint16 outdata = srcdata;
1157:
1158: storeword(dstaddr, outdata);
1159:
1160: VFLAG = 0;
1161: CFLAG = 0;
1162: NFLAG = ((sint16)outdata) < 0;
1163: ZFLAG = !outdata;
1164: PC+= 4;
1165: }
1166:
1167: void cpu_op_465a(t_ipc *ipc) /* MOVE */ {
1168: /* mask fff8, bits 33e0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
1169: int srcreg = (ipc->opcode >> 0) & 7;
1170: uint32 srcaddr = ADDRREG(srcreg)-=2;
1171: uint16 srcdata = fetchword(srcaddr);
1172: uint32 dstaddr = ipc->dst;
1173: uint16 outdata = srcdata;
1174:
1175: storeword(dstaddr, outdata);
1176: PC+= 6;
1177: }
1178:
1179: void cpu_op_465b(t_ipc *ipc) /* MOVE */ {
1180: /* mask fff8, bits 33e0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 4, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
1181: int srcreg = (ipc->opcode >> 0) & 7;
1182: uint32 srcaddr = ADDRREG(srcreg)-=2;
1183: uint16 srcdata = fetchword(srcaddr);
1184: uint32 dstaddr = ipc->dst;
1185: uint16 outdata = srcdata;
1186:
1187: storeword(dstaddr, outdata);
1188:
1189: VFLAG = 0;
1190: CFLAG = 0;
1191: NFLAG = ((sint16)outdata) < 0;
1192: ZFLAG = !outdata;
1193: PC+= 6;
1194: }
1195:
1196: void cpu_op_466a(t_ipc *ipc) /* MOVE */ {
1197: /* mask f1f8, bits 3028, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
1198: int srcreg = (ipc->opcode >> 0) & 7;
1199: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1200: uint16 srcdata = fetchword(srcaddr);
1201: int dstreg = (ipc->opcode >> 9) & 7;
1202: uint16 outdata = srcdata;
1203:
1204: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
1205: PC+= 4;
1206: }
1207:
1208: void cpu_op_466b(t_ipc *ipc) /* MOVE */ {
1209: /* mask f1f8, bits 3028, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
1210: int srcreg = (ipc->opcode >> 0) & 7;
1211: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1212: uint16 srcdata = fetchword(srcaddr);
1213: int dstreg = (ipc->opcode >> 9) & 7;
1214: uint16 outdata = srcdata;
1215:
1216: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
1217:
1218: VFLAG = 0;
1219: CFLAG = 0;
1220: NFLAG = ((sint16)outdata) < 0;
1221: ZFLAG = !outdata;
1222: PC+= 4;
1223: }
1224:
1225: void cpu_op_467a(t_ipc *ipc) /* MOVE */ {
1226: /* mask f1f8, bits 30a8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
1227: int srcreg = (ipc->opcode >> 0) & 7;
1228: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1229: uint16 srcdata = fetchword(srcaddr);
1230: int dstreg = (ipc->opcode >> 9) & 7;
1231: uint32 dstaddr = ADDRREG(dstreg);
1232: uint16 outdata = srcdata;
1233:
1234: storeword(dstaddr, outdata);
1235: PC+= 4;
1236: }
1237:
1238: void cpu_op_467b(t_ipc *ipc) /* MOVE */ {
1239: /* mask f1f8, bits 30a8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
1240: int srcreg = (ipc->opcode >> 0) & 7;
1241: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1242: uint16 srcdata = fetchword(srcaddr);
1243: int dstreg = (ipc->opcode >> 9) & 7;
1244: uint32 dstaddr = ADDRREG(dstreg);
1245: uint16 outdata = srcdata;
1246:
1247: storeword(dstaddr, outdata);
1248:
1249: VFLAG = 0;
1250: CFLAG = 0;
1251: NFLAG = ((sint16)outdata) < 0;
1252: ZFLAG = !outdata;
1253: PC+= 4;
1254: }
1255:
1256: void cpu_op_468a(t_ipc *ipc) /* MOVE */ {
1257: /* mask f1f8, bits 30e8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
1258: int srcreg = (ipc->opcode >> 0) & 7;
1259: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1260: uint16 srcdata = fetchword(srcaddr);
1261: int dstreg = (ipc->opcode >> 9) & 7;
1262: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
1263: uint16 outdata = srcdata;
1264:
1265: storeword(dstaddr, outdata);
1266: PC+= 4;
1267: }
1268:
1269: void cpu_op_468b(t_ipc *ipc) /* MOVE */ {
1270: /* mask f1f8, bits 30e8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
1271: int srcreg = (ipc->opcode >> 0) & 7;
1272: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1273: uint16 srcdata = fetchword(srcaddr);
1274: int dstreg = (ipc->opcode >> 9) & 7;
1275: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
1276: uint16 outdata = srcdata;
1277:
1278: storeword(dstaddr, outdata);
1279:
1280: VFLAG = 0;
1281: CFLAG = 0;
1282: NFLAG = ((sint16)outdata) < 0;
1283: ZFLAG = !outdata;
1284: PC+= 4;
1285: }
1286:
1287: void cpu_op_469a(t_ipc *ipc) /* MOVE */ {
1288: /* mask f1f8, bits 3128, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
1289: int srcreg = (ipc->opcode >> 0) & 7;
1290: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1291: uint16 srcdata = fetchword(srcaddr);
1292: int dstreg = (ipc->opcode >> 9) & 7;
1293: uint32 dstaddr = ADDRREG(dstreg)-=2;
1294: uint16 outdata = srcdata;
1295:
1296: storeword(dstaddr, outdata);
1297: PC+= 4;
1298: }
1299:
1300: void cpu_op_469b(t_ipc *ipc) /* MOVE */ {
1301: /* mask f1f8, bits 3128, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
1302: int srcreg = (ipc->opcode >> 0) & 7;
1303: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1304: uint16 srcdata = fetchword(srcaddr);
1305: int dstreg = (ipc->opcode >> 9) & 7;
1306: uint32 dstaddr = ADDRREG(dstreg)-=2;
1307: uint16 outdata = srcdata;
1308:
1309: storeword(dstaddr, outdata);
1310:
1311: VFLAG = 0;
1312: CFLAG = 0;
1313: NFLAG = ((sint16)outdata) < 0;
1314: ZFLAG = !outdata;
1315: PC+= 4;
1316: }
1317:
1318: void cpu_op_470a(t_ipc *ipc) /* MOVE */ {
1319: /* mask f1f8, bits 3168, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
1320: int srcreg = (ipc->opcode >> 0) & 7;
1321: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1322: uint16 srcdata = fetchword(srcaddr);
1323: int dstreg = (ipc->opcode >> 9) & 7;
1324: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
1325: uint16 outdata = srcdata;
1326:
1327: storeword(dstaddr, outdata);
1328: PC+= 6;
1329: }
1330:
1331: void cpu_op_470b(t_ipc *ipc) /* MOVE */ {
1332: /* mask f1f8, bits 3168, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
1333: int srcreg = (ipc->opcode >> 0) & 7;
1334: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1335: uint16 srcdata = fetchword(srcaddr);
1336: int dstreg = (ipc->opcode >> 9) & 7;
1337: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
1338: uint16 outdata = srcdata;
1339:
1340: storeword(dstaddr, outdata);
1341:
1342: VFLAG = 0;
1343: CFLAG = 0;
1344: NFLAG = ((sint16)outdata) < 0;
1345: ZFLAG = !outdata;
1346: PC+= 6;
1347: }
1348:
1349: void cpu_op_471a(t_ipc *ipc) /* MOVE */ {
1350: /* mask f1f8, bits 31a8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
1351: int srcreg = (ipc->opcode >> 0) & 7;
1352: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1353: uint16 srcdata = fetchword(srcaddr);
1354: int dstreg = (ipc->opcode >> 9) & 7;
1355: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
1356: uint16 outdata = srcdata;
1357:
1358: storeword(dstaddr, outdata);
1359: PC+= 6;
1360: }
1361:
1362: void cpu_op_471b(t_ipc *ipc) /* MOVE */ {
1363: /* mask f1f8, bits 31a8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
1364: int srcreg = (ipc->opcode >> 0) & 7;
1365: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1366: uint16 srcdata = fetchword(srcaddr);
1367: int dstreg = (ipc->opcode >> 9) & 7;
1368: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
1369: uint16 outdata = srcdata;
1370:
1371: storeword(dstaddr, outdata);
1372:
1373: VFLAG = 0;
1374: CFLAG = 0;
1375: NFLAG = ((sint16)outdata) < 0;
1376: ZFLAG = !outdata;
1377: PC+= 6;
1378: }
1379:
1380: void cpu_op_472a(t_ipc *ipc) /* MOVE */ {
1381: /* mask fff8, bits 31e8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
1382: int srcreg = (ipc->opcode >> 0) & 7;
1383: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1384: uint16 srcdata = fetchword(srcaddr);
1385: uint32 dstaddr = ipc->dst;
1386: uint16 outdata = srcdata;
1387:
1388: storeword(dstaddr, outdata);
1389: PC+= 6;
1390: }
1391:
1392: void cpu_op_472b(t_ipc *ipc) /* MOVE */ {
1393: /* mask fff8, bits 31e8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
1394: int srcreg = (ipc->opcode >> 0) & 7;
1395: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1396: uint16 srcdata = fetchword(srcaddr);
1397: uint32 dstaddr = ipc->dst;
1398: uint16 outdata = srcdata;
1399:
1400: storeword(dstaddr, outdata);
1401:
1402: VFLAG = 0;
1403: CFLAG = 0;
1404: NFLAG = ((sint16)outdata) < 0;
1405: ZFLAG = !outdata;
1406: PC+= 6;
1407: }
1408:
1409: void cpu_op_473a(t_ipc *ipc) /* MOVE */ {
1410: /* mask fff8, bits 33e8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
1411: int srcreg = (ipc->opcode >> 0) & 7;
1412: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1413: uint16 srcdata = fetchword(srcaddr);
1414: uint32 dstaddr = ipc->dst;
1415: uint16 outdata = srcdata;
1416:
1417: storeword(dstaddr, outdata);
1418: PC+= 8;
1419: }
1420:
1421: void cpu_op_473b(t_ipc *ipc) /* MOVE */ {
1422: /* mask fff8, bits 33e8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 5, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
1423: int srcreg = (ipc->opcode >> 0) & 7;
1424: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
1425: uint16 srcdata = fetchword(srcaddr);
1426: uint32 dstaddr = ipc->dst;
1427: uint16 outdata = srcdata;
1428:
1429: storeword(dstaddr, outdata);
1430:
1431: VFLAG = 0;
1432: CFLAG = 0;
1433: NFLAG = ((sint16)outdata) < 0;
1434: ZFLAG = !outdata;
1435: PC+= 8;
1436: }
1437:
1438: void cpu_op_474a(t_ipc *ipc) /* MOVE */ {
1439: /* mask f1f8, bits 3030, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
1440: int srcreg = (ipc->opcode >> 0) & 7;
1441: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1442: uint16 srcdata = fetchword(srcaddr);
1443: int dstreg = (ipc->opcode >> 9) & 7;
1444: uint16 outdata = srcdata;
1445:
1446: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
1447: PC+= 4;
1448: }
1449:
1450: void cpu_op_474b(t_ipc *ipc) /* MOVE */ {
1451: /* mask f1f8, bits 3030, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
1452: int srcreg = (ipc->opcode >> 0) & 7;
1453: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1454: uint16 srcdata = fetchword(srcaddr);
1455: int dstreg = (ipc->opcode >> 9) & 7;
1456: uint16 outdata = srcdata;
1457:
1458: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
1459:
1460: VFLAG = 0;
1461: CFLAG = 0;
1462: NFLAG = ((sint16)outdata) < 0;
1463: ZFLAG = !outdata;
1464: PC+= 4;
1465: }
1466:
1467: void cpu_op_475a(t_ipc *ipc) /* MOVE */ {
1468: /* mask f1f8, bits 30b0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
1469: int srcreg = (ipc->opcode >> 0) & 7;
1470: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1471: uint16 srcdata = fetchword(srcaddr);
1472: int dstreg = (ipc->opcode >> 9) & 7;
1473: uint32 dstaddr = ADDRREG(dstreg);
1474: uint16 outdata = srcdata;
1475:
1476: storeword(dstaddr, outdata);
1477: PC+= 4;
1478: }
1479:
1480: void cpu_op_475b(t_ipc *ipc) /* MOVE */ {
1481: /* mask f1f8, bits 30b0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
1482: int srcreg = (ipc->opcode >> 0) & 7;
1483: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1484: uint16 srcdata = fetchword(srcaddr);
1485: int dstreg = (ipc->opcode >> 9) & 7;
1486: uint32 dstaddr = ADDRREG(dstreg);
1487: uint16 outdata = srcdata;
1488:
1489: storeword(dstaddr, outdata);
1490:
1491: VFLAG = 0;
1492: CFLAG = 0;
1493: NFLAG = ((sint16)outdata) < 0;
1494: ZFLAG = !outdata;
1495: PC+= 4;
1496: }
1497:
1498: void cpu_op_476a(t_ipc *ipc) /* MOVE */ {
1499: /* mask f1f8, bits 30f0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
1500: int srcreg = (ipc->opcode >> 0) & 7;
1501: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1502: uint16 srcdata = fetchword(srcaddr);
1503: int dstreg = (ipc->opcode >> 9) & 7;
1504: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
1505: uint16 outdata = srcdata;
1506:
1507: storeword(dstaddr, outdata);
1508: PC+= 4;
1509: }
1510:
1511: void cpu_op_476b(t_ipc *ipc) /* MOVE */ {
1512: /* mask f1f8, bits 30f0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
1513: int srcreg = (ipc->opcode >> 0) & 7;
1514: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1515: uint16 srcdata = fetchword(srcaddr);
1516: int dstreg = (ipc->opcode >> 9) & 7;
1517: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
1518: uint16 outdata = srcdata;
1519:
1520: storeword(dstaddr, outdata);
1521:
1522: VFLAG = 0;
1523: CFLAG = 0;
1524: NFLAG = ((sint16)outdata) < 0;
1525: ZFLAG = !outdata;
1526: PC+= 4;
1527: }
1528:
1529: void cpu_op_477a(t_ipc *ipc) /* MOVE */ {
1530: /* mask f1f8, bits 3130, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
1531: int srcreg = (ipc->opcode >> 0) & 7;
1532: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1533: uint16 srcdata = fetchword(srcaddr);
1534: int dstreg = (ipc->opcode >> 9) & 7;
1535: uint32 dstaddr = ADDRREG(dstreg)-=2;
1536: uint16 outdata = srcdata;
1537:
1538: storeword(dstaddr, outdata);
1539: PC+= 4;
1540: }
1541:
1542: void cpu_op_477b(t_ipc *ipc) /* MOVE */ {
1543: /* mask f1f8, bits 3130, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
1544: int srcreg = (ipc->opcode >> 0) & 7;
1545: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1546: uint16 srcdata = fetchword(srcaddr);
1547: int dstreg = (ipc->opcode >> 9) & 7;
1548: uint32 dstaddr = ADDRREG(dstreg)-=2;
1549: uint16 outdata = srcdata;
1550:
1551: storeword(dstaddr, outdata);
1552:
1553: VFLAG = 0;
1554: CFLAG = 0;
1555: NFLAG = ((sint16)outdata) < 0;
1556: ZFLAG = !outdata;
1557: PC+= 4;
1558: }
1559:
1560: void cpu_op_478a(t_ipc *ipc) /* MOVE */ {
1561: /* mask f1f8, bits 3170, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
1562: int srcreg = (ipc->opcode >> 0) & 7;
1563: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1564: uint16 srcdata = fetchword(srcaddr);
1565: int dstreg = (ipc->opcode >> 9) & 7;
1566: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
1567: uint16 outdata = srcdata;
1568:
1569: storeword(dstaddr, outdata);
1570: PC+= 6;
1571: }
1572:
1573: void cpu_op_478b(t_ipc *ipc) /* MOVE */ {
1574: /* mask f1f8, bits 3170, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
1575: int srcreg = (ipc->opcode >> 0) & 7;
1576: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1577: uint16 srcdata = fetchword(srcaddr);
1578: int dstreg = (ipc->opcode >> 9) & 7;
1579: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
1580: uint16 outdata = srcdata;
1581:
1582: storeword(dstaddr, outdata);
1583:
1584: VFLAG = 0;
1585: CFLAG = 0;
1586: NFLAG = ((sint16)outdata) < 0;
1587: ZFLAG = !outdata;
1588: PC+= 6;
1589: }
1590:
1591: void cpu_op_479a(t_ipc *ipc) /* MOVE */ {
1592: /* mask f1f8, bits 31b0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
1593: int srcreg = (ipc->opcode >> 0) & 7;
1594: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1595: uint16 srcdata = fetchword(srcaddr);
1596: int dstreg = (ipc->opcode >> 9) & 7;
1597: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
1598: uint16 outdata = srcdata;
1599:
1600: storeword(dstaddr, outdata);
1601: PC+= 6;
1602: }
1603:
1604: void cpu_op_479b(t_ipc *ipc) /* MOVE */ {
1605: /* mask f1f8, bits 31b0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
1606: int srcreg = (ipc->opcode >> 0) & 7;
1607: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1608: uint16 srcdata = fetchword(srcaddr);
1609: int dstreg = (ipc->opcode >> 9) & 7;
1610: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
1611: uint16 outdata = srcdata;
1612:
1613: storeword(dstaddr, outdata);
1614:
1615: VFLAG = 0;
1616: CFLAG = 0;
1617: NFLAG = ((sint16)outdata) < 0;
1618: ZFLAG = !outdata;
1619: PC+= 6;
1620: }
1621:
1622: void cpu_op_480a(t_ipc *ipc) /* MOVE */ {
1623: /* mask fff8, bits 31f0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
1624: int srcreg = (ipc->opcode >> 0) & 7;
1625: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1626: uint16 srcdata = fetchword(srcaddr);
1627: uint32 dstaddr = ipc->dst;
1628: uint16 outdata = srcdata;
1629:
1630: storeword(dstaddr, outdata);
1631: PC+= 6;
1632: }
1633:
1634: void cpu_op_480b(t_ipc *ipc) /* MOVE */ {
1635: /* mask fff8, bits 31f0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
1636: int srcreg = (ipc->opcode >> 0) & 7;
1637: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1638: uint16 srcdata = fetchword(srcaddr);
1639: uint32 dstaddr = ipc->dst;
1640: uint16 outdata = srcdata;
1641:
1642: storeword(dstaddr, outdata);
1643:
1644: VFLAG = 0;
1645: CFLAG = 0;
1646: NFLAG = ((sint16)outdata) < 0;
1647: ZFLAG = !outdata;
1648: PC+= 6;
1649: }
1650:
1651: void cpu_op_481a(t_ipc *ipc) /* MOVE */ {
1652: /* mask fff8, bits 33f0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
1653: int srcreg = (ipc->opcode >> 0) & 7;
1654: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1655: uint16 srcdata = fetchword(srcaddr);
1656: uint32 dstaddr = ipc->dst;
1657: uint16 outdata = srcdata;
1658:
1659: storeword(dstaddr, outdata);
1660: PC+= 8;
1661: }
1662:
1663: void cpu_op_481b(t_ipc *ipc) /* MOVE */ {
1664: /* mask fff8, bits 33f0, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 6, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
1665: int srcreg = (ipc->opcode >> 0) & 7;
1666: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
1667: uint16 srcdata = fetchword(srcaddr);
1668: uint32 dstaddr = ipc->dst;
1669: uint16 outdata = srcdata;
1670:
1671: storeword(dstaddr, outdata);
1672:
1673: VFLAG = 0;
1674: CFLAG = 0;
1675: NFLAG = ((sint16)outdata) < 0;
1676: ZFLAG = !outdata;
1677: PC+= 8;
1678: }
1679:
1680: void cpu_op_482a(t_ipc *ipc) /* MOVE */ {
1681: /* mask f1ff, bits 3038, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
1682: uint32 srcaddr = ipc->src;
1683: uint16 srcdata = fetchword(srcaddr);
1684: int dstreg = (ipc->opcode >> 9) & 7;
1685: uint16 outdata = srcdata;
1686:
1687: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
1688: PC+= 4;
1689: }
1690:
1691: void cpu_op_482b(t_ipc *ipc) /* MOVE */ {
1692: /* mask f1ff, bits 3038, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
1693: uint32 srcaddr = ipc->src;
1694: uint16 srcdata = fetchword(srcaddr);
1695: int dstreg = (ipc->opcode >> 9) & 7;
1696: uint16 outdata = srcdata;
1697:
1698: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
1699:
1700: VFLAG = 0;
1701: CFLAG = 0;
1702: NFLAG = ((sint16)outdata) < 0;
1703: ZFLAG = !outdata;
1704: PC+= 4;
1705: }
1706:
1707: void cpu_op_483a(t_ipc *ipc) /* MOVE */ {
1708: /* mask f1ff, bits 30b8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
1709: uint32 srcaddr = ipc->src;
1710: uint16 srcdata = fetchword(srcaddr);
1711: int dstreg = (ipc->opcode >> 9) & 7;
1712: uint32 dstaddr = ADDRREG(dstreg);
1713: uint16 outdata = srcdata;
1714:
1715: storeword(dstaddr, outdata);
1716: PC+= 4;
1717: }
1718:
1719: void cpu_op_483b(t_ipc *ipc) /* MOVE */ {
1720: /* mask f1ff, bits 30b8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
1721: uint32 srcaddr = ipc->src;
1722: uint16 srcdata = fetchword(srcaddr);
1723: int dstreg = (ipc->opcode >> 9) & 7;
1724: uint32 dstaddr = ADDRREG(dstreg);
1725: uint16 outdata = srcdata;
1726:
1727: storeword(dstaddr, outdata);
1728:
1729: VFLAG = 0;
1730: CFLAG = 0;
1731: NFLAG = ((sint16)outdata) < 0;
1732: ZFLAG = !outdata;
1733: PC+= 4;
1734: }
1735:
1736: void cpu_op_484a(t_ipc *ipc) /* MOVE */ {
1737: /* mask f1ff, bits 30f8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
1738: uint32 srcaddr = ipc->src;
1739: uint16 srcdata = fetchword(srcaddr);
1740: int dstreg = (ipc->opcode >> 9) & 7;
1741: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
1742: uint16 outdata = srcdata;
1743:
1744: storeword(dstaddr, outdata);
1745: PC+= 4;
1746: }
1747:
1748: void cpu_op_484b(t_ipc *ipc) /* MOVE */ {
1749: /* mask f1ff, bits 30f8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
1750: uint32 srcaddr = ipc->src;
1751: uint16 srcdata = fetchword(srcaddr);
1752: int dstreg = (ipc->opcode >> 9) & 7;
1753: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
1754: uint16 outdata = srcdata;
1755:
1756: storeword(dstaddr, outdata);
1757:
1758: VFLAG = 0;
1759: CFLAG = 0;
1760: NFLAG = ((sint16)outdata) < 0;
1761: ZFLAG = !outdata;
1762: PC+= 4;
1763: }
1764:
1765: void cpu_op_485a(t_ipc *ipc) /* MOVE */ {
1766: /* mask f1ff, bits 3138, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
1767: uint32 srcaddr = ipc->src;
1768: uint16 srcdata = fetchword(srcaddr);
1769: int dstreg = (ipc->opcode >> 9) & 7;
1770: uint32 dstaddr = ADDRREG(dstreg)-=2;
1771: uint16 outdata = srcdata;
1772:
1773: storeword(dstaddr, outdata);
1774: PC+= 4;
1775: }
1776:
1777: void cpu_op_485b(t_ipc *ipc) /* MOVE */ {
1778: /* mask f1ff, bits 3138, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
1779: uint32 srcaddr = ipc->src;
1780: uint16 srcdata = fetchword(srcaddr);
1781: int dstreg = (ipc->opcode >> 9) & 7;
1782: uint32 dstaddr = ADDRREG(dstreg)-=2;
1783: uint16 outdata = srcdata;
1784:
1785: storeword(dstaddr, outdata);
1786:
1787: VFLAG = 0;
1788: CFLAG = 0;
1789: NFLAG = ((sint16)outdata) < 0;
1790: ZFLAG = !outdata;
1791: PC+= 4;
1792: }
1793:
1794: void cpu_op_486a(t_ipc *ipc) /* MOVE */ {
1795: /* mask f1ff, bits 3178, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
1796: uint32 srcaddr = ipc->src;
1797: uint16 srcdata = fetchword(srcaddr);
1798: int dstreg = (ipc->opcode >> 9) & 7;
1799: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
1800: uint16 outdata = srcdata;
1801:
1802: storeword(dstaddr, outdata);
1803: PC+= 6;
1804: }
1805:
1806: void cpu_op_486b(t_ipc *ipc) /* MOVE */ {
1807: /* mask f1ff, bits 3178, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
1808: uint32 srcaddr = ipc->src;
1809: uint16 srcdata = fetchword(srcaddr);
1810: int dstreg = (ipc->opcode >> 9) & 7;
1811: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
1812: uint16 outdata = srcdata;
1813:
1814: storeword(dstaddr, outdata);
1815:
1816: VFLAG = 0;
1817: CFLAG = 0;
1818: NFLAG = ((sint16)outdata) < 0;
1819: ZFLAG = !outdata;
1820: PC+= 6;
1821: }
1822:
1823: void cpu_op_487a(t_ipc *ipc) /* MOVE */ {
1824: /* mask f1ff, bits 31b8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
1825: uint32 srcaddr = ipc->src;
1826: uint16 srcdata = fetchword(srcaddr);
1827: int dstreg = (ipc->opcode >> 9) & 7;
1828: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
1829: uint16 outdata = srcdata;
1830:
1831: storeword(dstaddr, outdata);
1832: PC+= 6;
1833: }
1834:
1835: void cpu_op_487b(t_ipc *ipc) /* MOVE */ {
1836: /* mask f1ff, bits 31b8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
1837: uint32 srcaddr = ipc->src;
1838: uint16 srcdata = fetchword(srcaddr);
1839: int dstreg = (ipc->opcode >> 9) & 7;
1840: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
1841: uint16 outdata = srcdata;
1842:
1843: storeword(dstaddr, outdata);
1844:
1845: VFLAG = 0;
1846: CFLAG = 0;
1847: NFLAG = ((sint16)outdata) < 0;
1848: ZFLAG = !outdata;
1849: PC+= 6;
1850: }
1851:
1852: void cpu_op_488a(t_ipc *ipc) /* MOVE */ {
1853: /* mask ffff, bits 31f8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
1854: uint32 srcaddr = ipc->src;
1855: uint16 srcdata = fetchword(srcaddr);
1856: uint32 dstaddr = ipc->dst;
1857: uint16 outdata = srcdata;
1858:
1859: storeword(dstaddr, outdata);
1860: PC+= 6;
1861: }
1862:
1863: void cpu_op_488b(t_ipc *ipc) /* MOVE */ {
1864: /* mask ffff, bits 31f8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
1865: uint32 srcaddr = ipc->src;
1866: uint16 srcdata = fetchword(srcaddr);
1867: uint32 dstaddr = ipc->dst;
1868: uint16 outdata = srcdata;
1869:
1870: storeword(dstaddr, outdata);
1871:
1872: VFLAG = 0;
1873: CFLAG = 0;
1874: NFLAG = ((sint16)outdata) < 0;
1875: ZFLAG = !outdata;
1876: PC+= 6;
1877: }
1878:
1879: void cpu_op_489a(t_ipc *ipc) /* MOVE */ {
1880: /* mask ffff, bits 33f8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
1881: uint32 srcaddr = ipc->src;
1882: uint16 srcdata = fetchword(srcaddr);
1883: uint32 dstaddr = ipc->dst;
1884: uint16 outdata = srcdata;
1885:
1886: storeword(dstaddr, outdata);
1887: PC+= 8;
1888: }
1889:
1890: void cpu_op_489b(t_ipc *ipc) /* MOVE */ {
1891: /* mask ffff, bits 33f8, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 7, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
1892: uint32 srcaddr = ipc->src;
1893: uint16 srcdata = fetchword(srcaddr);
1894: uint32 dstaddr = ipc->dst;
1895: uint16 outdata = srcdata;
1896:
1897: storeword(dstaddr, outdata);
1898:
1899: VFLAG = 0;
1900: CFLAG = 0;
1901: NFLAG = ((sint16)outdata) < 0;
1902: ZFLAG = !outdata;
1903: PC+= 8;
1904: }
1905:
1906: void cpu_op_490a(t_ipc *ipc) /* MOVE */ {
1907: /* mask f1ff, bits 3039, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
1908: uint32 srcaddr = ipc->src;
1909: uint16 srcdata = fetchword(srcaddr);
1910: int dstreg = (ipc->opcode >> 9) & 7;
1911: uint16 outdata = srcdata;
1912:
1913: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
1914: PC+= 6;
1915: }
1916:
1917: void cpu_op_490b(t_ipc *ipc) /* MOVE */ {
1918: /* mask f1ff, bits 3039, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
1919: uint32 srcaddr = ipc->src;
1920: uint16 srcdata = fetchword(srcaddr);
1921: int dstreg = (ipc->opcode >> 9) & 7;
1922: uint16 outdata = srcdata;
1923:
1924: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
1925:
1926: VFLAG = 0;
1927: CFLAG = 0;
1928: NFLAG = ((sint16)outdata) < 0;
1929: ZFLAG = !outdata;
1930: PC+= 6;
1931: }
1932:
1933: void cpu_op_491a(t_ipc *ipc) /* MOVE */ {
1934: /* mask f1ff, bits 30b9, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
1935: uint32 srcaddr = ipc->src;
1936: uint16 srcdata = fetchword(srcaddr);
1937: int dstreg = (ipc->opcode >> 9) & 7;
1938: uint32 dstaddr = ADDRREG(dstreg);
1939: uint16 outdata = srcdata;
1940:
1941: storeword(dstaddr, outdata);
1942: PC+= 6;
1943: }
1944:
1945: void cpu_op_491b(t_ipc *ipc) /* MOVE */ {
1946: /* mask f1ff, bits 30b9, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
1947: uint32 srcaddr = ipc->src;
1948: uint16 srcdata = fetchword(srcaddr);
1949: int dstreg = (ipc->opcode >> 9) & 7;
1950: uint32 dstaddr = ADDRREG(dstreg);
1951: uint16 outdata = srcdata;
1952:
1953: storeword(dstaddr, outdata);
1954:
1955: VFLAG = 0;
1956: CFLAG = 0;
1957: NFLAG = ((sint16)outdata) < 0;
1958: ZFLAG = !outdata;
1959: PC+= 6;
1960: }
1961:
1962: void cpu_op_492a(t_ipc *ipc) /* MOVE */ {
1963: /* mask f1ff, bits 30f9, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
1964: uint32 srcaddr = ipc->src;
1965: uint16 srcdata = fetchword(srcaddr);
1966: int dstreg = (ipc->opcode >> 9) & 7;
1967: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
1968: uint16 outdata = srcdata;
1969:
1970: storeword(dstaddr, outdata);
1971: PC+= 6;
1972: }
1973:
1974: void cpu_op_492b(t_ipc *ipc) /* MOVE */ {
1975: /* mask f1ff, bits 30f9, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
1976: uint32 srcaddr = ipc->src;
1977: uint16 srcdata = fetchword(srcaddr);
1978: int dstreg = (ipc->opcode >> 9) & 7;
1979: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
1980: uint16 outdata = srcdata;
1981:
1982: storeword(dstaddr, outdata);
1983:
1984: VFLAG = 0;
1985: CFLAG = 0;
1986: NFLAG = ((sint16)outdata) < 0;
1987: ZFLAG = !outdata;
1988: PC+= 6;
1989: }
1990:
1991: void cpu_op_493a(t_ipc *ipc) /* MOVE */ {
1992: /* mask f1ff, bits 3139, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
1993: uint32 srcaddr = ipc->src;
1994: uint16 srcdata = fetchword(srcaddr);
1995: int dstreg = (ipc->opcode >> 9) & 7;
1996: uint32 dstaddr = ADDRREG(dstreg)-=2;
1997: uint16 outdata = srcdata;
1998:
1999: storeword(dstaddr, outdata);
2000: PC+= 6;
2001: }
2002:
2003: void cpu_op_493b(t_ipc *ipc) /* MOVE */ {
2004: /* mask f1ff, bits 3139, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
2005: uint32 srcaddr = ipc->src;
2006: uint16 srcdata = fetchword(srcaddr);
2007: int dstreg = (ipc->opcode >> 9) & 7;
2008: uint32 dstaddr = ADDRREG(dstreg)-=2;
2009: uint16 outdata = srcdata;
2010:
2011: storeword(dstaddr, outdata);
2012:
2013: VFLAG = 0;
2014: CFLAG = 0;
2015: NFLAG = ((sint16)outdata) < 0;
2016: ZFLAG = !outdata;
2017: PC+= 6;
2018: }
2019:
2020: void cpu_op_494a(t_ipc *ipc) /* MOVE */ {
2021: /* mask f1ff, bits 3179, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
2022: uint32 srcaddr = ipc->src;
2023: uint16 srcdata = fetchword(srcaddr);
2024: int dstreg = (ipc->opcode >> 9) & 7;
2025: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
2026: uint16 outdata = srcdata;
2027:
2028: storeword(dstaddr, outdata);
2029: PC+= 8;
2030: }
2031:
2032: void cpu_op_494b(t_ipc *ipc) /* MOVE */ {
2033: /* mask f1ff, bits 3179, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
2034: uint32 srcaddr = ipc->src;
2035: uint16 srcdata = fetchword(srcaddr);
2036: int dstreg = (ipc->opcode >> 9) & 7;
2037: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
2038: uint16 outdata = srcdata;
2039:
2040: storeword(dstaddr, outdata);
2041:
2042: VFLAG = 0;
2043: CFLAG = 0;
2044: NFLAG = ((sint16)outdata) < 0;
2045: ZFLAG = !outdata;
2046: PC+= 8;
2047: }
2048:
2049: void cpu_op_495a(t_ipc *ipc) /* MOVE */ {
2050: /* mask f1ff, bits 31b9, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
2051: uint32 srcaddr = ipc->src;
2052: uint16 srcdata = fetchword(srcaddr);
2053: int dstreg = (ipc->opcode >> 9) & 7;
2054: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
2055: uint16 outdata = srcdata;
2056:
2057: storeword(dstaddr, outdata);
2058: PC+= 8;
2059: }
2060:
2061: void cpu_op_495b(t_ipc *ipc) /* MOVE */ {
2062: /* mask f1ff, bits 31b9, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
2063: uint32 srcaddr = ipc->src;
2064: uint16 srcdata = fetchword(srcaddr);
2065: int dstreg = (ipc->opcode >> 9) & 7;
2066: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
2067: uint16 outdata = srcdata;
2068:
2069: storeword(dstaddr, outdata);
2070:
2071: VFLAG = 0;
2072: CFLAG = 0;
2073: NFLAG = ((sint16)outdata) < 0;
2074: ZFLAG = !outdata;
2075: PC+= 8;
2076: }
2077:
2078: void cpu_op_496a(t_ipc *ipc) /* MOVE */ {
2079: /* mask ffff, bits 31f9, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
2080: uint32 srcaddr = ipc->src;
2081: uint16 srcdata = fetchword(srcaddr);
2082: uint32 dstaddr = ipc->dst;
2083: uint16 outdata = srcdata;
2084:
2085: storeword(dstaddr, outdata);
2086: PC+= 8;
2087: }
2088:
2089: void cpu_op_496b(t_ipc *ipc) /* MOVE */ {
2090: /* mask ffff, bits 31f9, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
2091: uint32 srcaddr = ipc->src;
2092: uint16 srcdata = fetchword(srcaddr);
2093: uint32 dstaddr = ipc->dst;
2094: uint16 outdata = srcdata;
2095:
2096: storeword(dstaddr, outdata);
2097:
2098: VFLAG = 0;
2099: CFLAG = 0;
2100: NFLAG = ((sint16)outdata) < 0;
2101: ZFLAG = !outdata;
2102: PC+= 8;
2103: }
2104:
2105: void cpu_op_497a(t_ipc *ipc) /* MOVE */ {
2106: /* mask ffff, bits 33f9, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
2107: uint32 srcaddr = ipc->src;
2108: uint16 srcdata = fetchword(srcaddr);
2109: uint32 dstaddr = ipc->dst;
2110: uint16 outdata = srcdata;
2111:
2112: storeword(dstaddr, outdata);
2113: PC+= 10;
2114: }
2115:
2116: void cpu_op_497b(t_ipc *ipc) /* MOVE */ {
2117: /* mask ffff, bits 33f9, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 8, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
2118: uint32 srcaddr = ipc->src;
2119: uint16 srcdata = fetchword(srcaddr);
2120: uint32 dstaddr = ipc->dst;
2121: uint16 outdata = srcdata;
2122:
2123: storeword(dstaddr, outdata);
2124:
2125: VFLAG = 0;
2126: CFLAG = 0;
2127: NFLAG = ((sint16)outdata) < 0;
2128: ZFLAG = !outdata;
2129: PC+= 10;
2130: }
2131:
2132: void cpu_op_498a(t_ipc *ipc) /* MOVE */ {
2133: /* mask f1ff, bits 303a, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
2134: uint32 srcaddr = ipc->src;
2135: uint16 srcdata = fetchword(srcaddr);
2136: int dstreg = (ipc->opcode >> 9) & 7;
2137: uint16 outdata = srcdata;
2138:
2139: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
2140: PC+= 4;
2141: }
2142:
2143: void cpu_op_498b(t_ipc *ipc) /* MOVE */ {
2144: /* mask f1ff, bits 303a, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
2145: uint32 srcaddr = ipc->src;
2146: uint16 srcdata = fetchword(srcaddr);
2147: int dstreg = (ipc->opcode >> 9) & 7;
2148: uint16 outdata = srcdata;
2149:
2150: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
2151:
2152: VFLAG = 0;
2153: CFLAG = 0;
2154: NFLAG = ((sint16)outdata) < 0;
2155: ZFLAG = !outdata;
2156: PC+= 4;
2157: }
2158:
2159: void cpu_op_499a(t_ipc *ipc) /* MOVE */ {
2160: /* mask f1ff, bits 30ba, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
2161: uint32 srcaddr = ipc->src;
2162: uint16 srcdata = fetchword(srcaddr);
2163: int dstreg = (ipc->opcode >> 9) & 7;
2164: uint32 dstaddr = ADDRREG(dstreg);
2165: uint16 outdata = srcdata;
2166:
2167: storeword(dstaddr, outdata);
2168: PC+= 4;
2169: }
2170:
2171: void cpu_op_499b(t_ipc *ipc) /* MOVE */ {
2172: /* mask f1ff, bits 30ba, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
2173: uint32 srcaddr = ipc->src;
2174: uint16 srcdata = fetchword(srcaddr);
2175: int dstreg = (ipc->opcode >> 9) & 7;
2176: uint32 dstaddr = ADDRREG(dstreg);
2177: uint16 outdata = srcdata;
2178:
2179: storeword(dstaddr, outdata);
2180:
2181: VFLAG = 0;
2182: CFLAG = 0;
2183: NFLAG = ((sint16)outdata) < 0;
2184: ZFLAG = !outdata;
2185: PC+= 4;
2186: }
2187:
2188: void cpu_op_500a(t_ipc *ipc) /* MOVE */ {
2189: /* mask f1ff, bits 30fa, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
2190: uint32 srcaddr = ipc->src;
2191: uint16 srcdata = fetchword(srcaddr);
2192: int dstreg = (ipc->opcode >> 9) & 7;
2193: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
2194: uint16 outdata = srcdata;
2195:
2196: storeword(dstaddr, outdata);
2197: PC+= 4;
2198: }
2199:
2200: void cpu_op_500b(t_ipc *ipc) /* MOVE */ {
2201: /* mask f1ff, bits 30fa, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
2202: uint32 srcaddr = ipc->src;
2203: uint16 srcdata = fetchword(srcaddr);
2204: int dstreg = (ipc->opcode >> 9) & 7;
2205: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
2206: uint16 outdata = srcdata;
2207:
2208: storeword(dstaddr, outdata);
2209:
2210: VFLAG = 0;
2211: CFLAG = 0;
2212: NFLAG = ((sint16)outdata) < 0;
2213: ZFLAG = !outdata;
2214: PC+= 4;
2215: }
2216:
2217: void cpu_op_501a(t_ipc *ipc) /* MOVE */ {
2218: /* mask f1ff, bits 313a, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
2219: uint32 srcaddr = ipc->src;
2220: uint16 srcdata = fetchword(srcaddr);
2221: int dstreg = (ipc->opcode >> 9) & 7;
2222: uint32 dstaddr = ADDRREG(dstreg)-=2;
2223: uint16 outdata = srcdata;
2224:
2225: storeword(dstaddr, outdata);
2226: PC+= 4;
2227: }
2228:
2229: void cpu_op_501b(t_ipc *ipc) /* MOVE */ {
2230: /* mask f1ff, bits 313a, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
2231: uint32 srcaddr = ipc->src;
2232: uint16 srcdata = fetchword(srcaddr);
2233: int dstreg = (ipc->opcode >> 9) & 7;
2234: uint32 dstaddr = ADDRREG(dstreg)-=2;
2235: uint16 outdata = srcdata;
2236:
2237: storeword(dstaddr, outdata);
2238:
2239: VFLAG = 0;
2240: CFLAG = 0;
2241: NFLAG = ((sint16)outdata) < 0;
2242: ZFLAG = !outdata;
2243: PC+= 4;
2244: }
2245:
2246: void cpu_op_502a(t_ipc *ipc) /* MOVE */ {
2247: /* mask f1ff, bits 317a, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
2248: uint32 srcaddr = ipc->src;
2249: uint16 srcdata = fetchword(srcaddr);
2250: int dstreg = (ipc->opcode >> 9) & 7;
2251: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
2252: uint16 outdata = srcdata;
2253:
2254: storeword(dstaddr, outdata);
2255: PC+= 6;
2256: }
2257:
2258: void cpu_op_502b(t_ipc *ipc) /* MOVE */ {
2259: /* mask f1ff, bits 317a, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
2260: uint32 srcaddr = ipc->src;
2261: uint16 srcdata = fetchword(srcaddr);
2262: int dstreg = (ipc->opcode >> 9) & 7;
2263: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
2264: uint16 outdata = srcdata;
2265:
2266: storeword(dstaddr, outdata);
2267:
2268: VFLAG = 0;
2269: CFLAG = 0;
2270: NFLAG = ((sint16)outdata) < 0;
2271: ZFLAG = !outdata;
2272: PC+= 6;
2273: }
2274:
2275: void cpu_op_503a(t_ipc *ipc) /* MOVE */ {
2276: /* mask f1ff, bits 31ba, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
2277: uint32 srcaddr = ipc->src;
2278: uint16 srcdata = fetchword(srcaddr);
2279: int dstreg = (ipc->opcode >> 9) & 7;
2280: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
2281: uint16 outdata = srcdata;
2282:
2283: storeword(dstaddr, outdata);
2284: PC+= 6;
2285: }
2286:
2287: void cpu_op_503b(t_ipc *ipc) /* MOVE */ {
2288: /* mask f1ff, bits 31ba, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
2289: uint32 srcaddr = ipc->src;
2290: uint16 srcdata = fetchword(srcaddr);
2291: int dstreg = (ipc->opcode >> 9) & 7;
2292: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
2293: uint16 outdata = srcdata;
2294:
2295: storeword(dstaddr, outdata);
2296:
2297: VFLAG = 0;
2298: CFLAG = 0;
2299: NFLAG = ((sint16)outdata) < 0;
2300: ZFLAG = !outdata;
2301: PC+= 6;
2302: }
2303:
2304: void cpu_op_504a(t_ipc *ipc) /* MOVE */ {
2305: /* mask ffff, bits 31fa, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
2306: uint32 srcaddr = ipc->src;
2307: uint16 srcdata = fetchword(srcaddr);
2308: uint32 dstaddr = ipc->dst;
2309: uint16 outdata = srcdata;
2310:
2311: storeword(dstaddr, outdata);
2312: PC+= 6;
2313: }
2314:
2315: void cpu_op_504b(t_ipc *ipc) /* MOVE */ {
2316: /* mask ffff, bits 31fa, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
2317: uint32 srcaddr = ipc->src;
2318: uint16 srcdata = fetchword(srcaddr);
2319: uint32 dstaddr = ipc->dst;
2320: uint16 outdata = srcdata;
2321:
2322: storeword(dstaddr, outdata);
2323:
2324: VFLAG = 0;
2325: CFLAG = 0;
2326: NFLAG = ((sint16)outdata) < 0;
2327: ZFLAG = !outdata;
2328: PC+= 6;
2329: }
2330:
2331: void cpu_op_505a(t_ipc *ipc) /* MOVE */ {
2332: /* mask ffff, bits 33fa, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
2333: uint32 srcaddr = ipc->src;
2334: uint16 srcdata = fetchword(srcaddr);
2335: uint32 dstaddr = ipc->dst;
2336: uint16 outdata = srcdata;
2337:
2338: storeword(dstaddr, outdata);
2339: PC+= 8;
2340: }
2341:
2342: void cpu_op_505b(t_ipc *ipc) /* MOVE */ {
2343: /* mask ffff, bits 33fa, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 9, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
2344: uint32 srcaddr = ipc->src;
2345: uint16 srcdata = fetchword(srcaddr);
2346: uint32 dstaddr = ipc->dst;
2347: uint16 outdata = srcdata;
2348:
2349: storeword(dstaddr, outdata);
2350:
2351: VFLAG = 0;
2352: CFLAG = 0;
2353: NFLAG = ((sint16)outdata) < 0;
2354: ZFLAG = !outdata;
2355: PC+= 8;
2356: }
2357:
2358: void cpu_op_506a(t_ipc *ipc) /* MOVE */ {
2359: /* mask f1ff, bits 303b, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
2360: uint32 srcaddr = idxval_src(ipc);
2361: uint16 srcdata = fetchword(srcaddr);
2362: int dstreg = (ipc->opcode >> 9) & 7;
2363: uint16 outdata = srcdata;
2364:
2365: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
2366: PC+= 4;
2367: }
2368:
2369: void cpu_op_506b(t_ipc *ipc) /* MOVE */ {
2370: /* mask f1ff, bits 303b, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
2371: uint32 srcaddr = idxval_src(ipc);
2372: uint16 srcdata = fetchword(srcaddr);
2373: int dstreg = (ipc->opcode >> 9) & 7;
2374: uint16 outdata = srcdata;
2375:
2376: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
2377:
2378: VFLAG = 0;
2379: CFLAG = 0;
2380: NFLAG = ((sint16)outdata) < 0;
2381: ZFLAG = !outdata;
2382: PC+= 4;
2383: }
2384:
2385: void cpu_op_507a(t_ipc *ipc) /* MOVE */ {
2386: /* mask f1ff, bits 30bb, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
2387: uint32 srcaddr = idxval_src(ipc);
2388: uint16 srcdata = fetchword(srcaddr);
2389: int dstreg = (ipc->opcode >> 9) & 7;
2390: uint32 dstaddr = ADDRREG(dstreg);
2391: uint16 outdata = srcdata;
2392:
2393: storeword(dstaddr, outdata);
2394: PC+= 4;
2395: }
2396:
2397: void cpu_op_507b(t_ipc *ipc) /* MOVE */ {
2398: /* mask f1ff, bits 30bb, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
2399: uint32 srcaddr = idxval_src(ipc);
2400: uint16 srcdata = fetchword(srcaddr);
2401: int dstreg = (ipc->opcode >> 9) & 7;
2402: uint32 dstaddr = ADDRREG(dstreg);
2403: uint16 outdata = srcdata;
2404:
2405: storeword(dstaddr, outdata);
2406:
2407: VFLAG = 0;
2408: CFLAG = 0;
2409: NFLAG = ((sint16)outdata) < 0;
2410: ZFLAG = !outdata;
2411: PC+= 4;
2412: }
2413:
2414: void cpu_op_508a(t_ipc *ipc) /* MOVE */ {
2415: /* mask f1ff, bits 30fb, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
2416: uint32 srcaddr = idxval_src(ipc);
2417: uint16 srcdata = fetchword(srcaddr);
2418: int dstreg = (ipc->opcode >> 9) & 7;
2419: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
2420: uint16 outdata = srcdata;
2421:
2422: storeword(dstaddr, outdata);
2423: PC+= 4;
2424: }
2425:
2426: void cpu_op_508b(t_ipc *ipc) /* MOVE */ {
2427: /* mask f1ff, bits 30fb, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
2428: uint32 srcaddr = idxval_src(ipc);
2429: uint16 srcdata = fetchword(srcaddr);
2430: int dstreg = (ipc->opcode >> 9) & 7;
2431: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
2432: uint16 outdata = srcdata;
2433:
2434: storeword(dstaddr, outdata);
2435:
2436: VFLAG = 0;
2437: CFLAG = 0;
2438: NFLAG = ((sint16)outdata) < 0;
2439: ZFLAG = !outdata;
2440: PC+= 4;
2441: }
2442:
2443: void cpu_op_509a(t_ipc *ipc) /* MOVE */ {
2444: /* mask f1ff, bits 313b, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
2445: uint32 srcaddr = idxval_src(ipc);
2446: uint16 srcdata = fetchword(srcaddr);
2447: int dstreg = (ipc->opcode >> 9) & 7;
2448: uint32 dstaddr = ADDRREG(dstreg)-=2;
2449: uint16 outdata = srcdata;
2450:
2451: storeword(dstaddr, outdata);
2452: PC+= 4;
2453: }
2454:
2455: void cpu_op_509b(t_ipc *ipc) /* MOVE */ {
2456: /* mask f1ff, bits 313b, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
2457: uint32 srcaddr = idxval_src(ipc);
2458: uint16 srcdata = fetchword(srcaddr);
2459: int dstreg = (ipc->opcode >> 9) & 7;
2460: uint32 dstaddr = ADDRREG(dstreg)-=2;
2461: uint16 outdata = srcdata;
2462:
2463: storeword(dstaddr, outdata);
2464:
2465: VFLAG = 0;
2466: CFLAG = 0;
2467: NFLAG = ((sint16)outdata) < 0;
2468: ZFLAG = !outdata;
2469: PC+= 4;
2470: }
2471:
2472: void cpu_op_510a(t_ipc *ipc) /* MOVE */ {
2473: /* mask f1ff, bits 317b, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
2474: uint32 srcaddr = idxval_src(ipc);
2475: uint16 srcdata = fetchword(srcaddr);
2476: int dstreg = (ipc->opcode >> 9) & 7;
2477: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
2478: uint16 outdata = srcdata;
2479:
2480: storeword(dstaddr, outdata);
2481: PC+= 6;
2482: }
2483:
2484: void cpu_op_510b(t_ipc *ipc) /* MOVE */ {
2485: /* mask f1ff, bits 317b, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
2486: uint32 srcaddr = idxval_src(ipc);
2487: uint16 srcdata = fetchword(srcaddr);
2488: int dstreg = (ipc->opcode >> 9) & 7;
2489: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
2490: uint16 outdata = srcdata;
2491:
2492: storeword(dstaddr, outdata);
2493:
2494: VFLAG = 0;
2495: CFLAG = 0;
2496: NFLAG = ((sint16)outdata) < 0;
2497: ZFLAG = !outdata;
2498: PC+= 6;
2499: }
2500:
2501: void cpu_op_511a(t_ipc *ipc) /* MOVE */ {
2502: /* mask f1ff, bits 31bb, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
2503: uint32 srcaddr = idxval_src(ipc);
2504: uint16 srcdata = fetchword(srcaddr);
2505: int dstreg = (ipc->opcode >> 9) & 7;
2506: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
2507: uint16 outdata = srcdata;
2508:
2509: storeword(dstaddr, outdata);
2510: PC+= 6;
2511: }
2512:
2513: void cpu_op_511b(t_ipc *ipc) /* MOVE */ {
2514: /* mask f1ff, bits 31bb, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
2515: uint32 srcaddr = idxval_src(ipc);
2516: uint16 srcdata = fetchword(srcaddr);
2517: int dstreg = (ipc->opcode >> 9) & 7;
2518: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
2519: uint16 outdata = srcdata;
2520:
2521: storeword(dstaddr, outdata);
2522:
2523: VFLAG = 0;
2524: CFLAG = 0;
2525: NFLAG = ((sint16)outdata) < 0;
2526: ZFLAG = !outdata;
2527: PC+= 6;
2528: }
2529:
2530: void cpu_op_512a(t_ipc *ipc) /* MOVE */ {
2531: /* mask ffff, bits 31fb, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
2532: uint32 srcaddr = idxval_src(ipc);
2533: uint16 srcdata = fetchword(srcaddr);
2534: uint32 dstaddr = ipc->dst;
2535: uint16 outdata = srcdata;
2536:
2537: storeword(dstaddr, outdata);
2538: PC+= 6;
2539: }
2540:
2541: void cpu_op_512b(t_ipc *ipc) /* MOVE */ {
2542: /* mask ffff, bits 31fb, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
2543: uint32 srcaddr = idxval_src(ipc);
2544: uint16 srcdata = fetchword(srcaddr);
2545: uint32 dstaddr = ipc->dst;
2546: uint16 outdata = srcdata;
2547:
2548: storeword(dstaddr, outdata);
2549:
2550: VFLAG = 0;
2551: CFLAG = 0;
2552: NFLAG = ((sint16)outdata) < 0;
2553: ZFLAG = !outdata;
2554: PC+= 6;
2555: }
2556:
2557: void cpu_op_513a(t_ipc *ipc) /* MOVE */ {
2558: /* mask ffff, bits 33fb, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
2559: uint32 srcaddr = idxval_src(ipc);
2560: uint16 srcdata = fetchword(srcaddr);
2561: uint32 dstaddr = ipc->dst;
2562: uint16 outdata = srcdata;
2563:
2564: storeword(dstaddr, outdata);
2565: PC+= 8;
2566: }
2567:
2568: void cpu_op_513b(t_ipc *ipc) /* MOVE */ {
2569: /* mask ffff, bits 33fb, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 10, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
2570: uint32 srcaddr = idxval_src(ipc);
2571: uint16 srcdata = fetchword(srcaddr);
2572: uint32 dstaddr = ipc->dst;
2573: uint16 outdata = srcdata;
2574:
2575: storeword(dstaddr, outdata);
2576:
2577: VFLAG = 0;
2578: CFLAG = 0;
2579: NFLAG = ((sint16)outdata) < 0;
2580: ZFLAG = !outdata;
2581: PC+= 8;
2582: }
2583:
2584: void cpu_op_514a(t_ipc *ipc) /* MOVE */ {
2585: /* mask f1ff, bits 303c, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
2586: uint16 srcdata = ipc->src;
2587: int dstreg = (ipc->opcode >> 9) & 7;
2588: uint16 outdata = srcdata;
2589:
2590: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
2591: PC+= 4;
2592: }
2593:
2594: void cpu_op_514b(t_ipc *ipc) /* MOVE */ {
2595: /* mask f1ff, bits 303c, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
2596: uint16 srcdata = ipc->src;
2597: int dstreg = (ipc->opcode >> 9) & 7;
2598: uint16 outdata = srcdata;
2599:
2600: DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
2601:
2602: VFLAG = 0;
2603: CFLAG = 0;
2604: NFLAG = ((sint16)outdata) < 0;
2605: ZFLAG = !outdata;
2606: PC+= 4;
2607: }
2608:
2609: void cpu_op_515a(t_ipc *ipc) /* MOVE */ {
2610: /* mask f1ff, bits 30bc, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
2611: uint16 srcdata = ipc->src;
2612: int dstreg = (ipc->opcode >> 9) & 7;
2613: uint32 dstaddr = ADDRREG(dstreg);
2614: uint16 outdata = srcdata;
2615:
2616: storeword(dstaddr, outdata);
2617: PC+= 4;
2618: }
2619:
2620: void cpu_op_515b(t_ipc *ipc) /* MOVE */ {
2621: /* mask f1ff, bits 30bc, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 2, sbitpos 0, dbitpos 9, immvalue 0 */
2622: uint16 srcdata = ipc->src;
2623: int dstreg = (ipc->opcode >> 9) & 7;
2624: uint32 dstaddr = ADDRREG(dstreg);
2625: uint16 outdata = srcdata;
2626:
2627: storeword(dstaddr, outdata);
2628:
2629: VFLAG = 0;
2630: CFLAG = 0;
2631: NFLAG = ((sint16)outdata) < 0;
2632: ZFLAG = !outdata;
2633: PC+= 4;
2634: }
2635:
2636: void cpu_op_516a(t_ipc *ipc) /* MOVE */ {
2637: /* mask f1ff, bits 30fc, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
2638: uint16 srcdata = ipc->src;
2639: int dstreg = (ipc->opcode >> 9) & 7;
2640: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
2641: uint16 outdata = srcdata;
2642:
2643: storeword(dstaddr, outdata);
2644: PC+= 4;
2645: }
2646:
2647: void cpu_op_516b(t_ipc *ipc) /* MOVE */ {
2648: /* mask f1ff, bits 30fc, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 3, sbitpos 0, dbitpos 9, immvalue 0 */
2649: uint16 srcdata = ipc->src;
2650: int dstreg = (ipc->opcode >> 9) & 7;
2651: uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
2652: uint16 outdata = srcdata;
2653:
2654: storeword(dstaddr, outdata);
2655:
2656: VFLAG = 0;
2657: CFLAG = 0;
2658: NFLAG = ((sint16)outdata) < 0;
2659: ZFLAG = !outdata;
2660: PC+= 4;
2661: }
2662:
2663: void cpu_op_517a(t_ipc *ipc) /* MOVE */ {
2664: /* mask f1ff, bits 313c, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
2665: uint16 srcdata = ipc->src;
2666: int dstreg = (ipc->opcode >> 9) & 7;
2667: uint32 dstaddr = ADDRREG(dstreg)-=2;
2668: uint16 outdata = srcdata;
2669:
2670: storeword(dstaddr, outdata);
2671: PC+= 4;
2672: }
2673:
2674: void cpu_op_517b(t_ipc *ipc) /* MOVE */ {
2675: /* mask f1ff, bits 313c, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
2676: uint16 srcdata = ipc->src;
2677: int dstreg = (ipc->opcode >> 9) & 7;
2678: uint32 dstaddr = ADDRREG(dstreg)-=2;
2679: uint16 outdata = srcdata;
2680:
2681: storeword(dstaddr, outdata);
2682:
2683: VFLAG = 0;
2684: CFLAG = 0;
2685: NFLAG = ((sint16)outdata) < 0;
2686: ZFLAG = !outdata;
2687: PC+= 4;
2688: }
2689:
2690: void cpu_op_518a(t_ipc *ipc) /* MOVE */ {
2691: /* mask f1ff, bits 317c, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
2692: uint16 srcdata = ipc->src;
2693: int dstreg = (ipc->opcode >> 9) & 7;
2694: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
2695: uint16 outdata = srcdata;
2696:
2697: storeword(dstaddr, outdata);
2698: PC+= 6;
2699: }
2700:
2701: void cpu_op_518b(t_ipc *ipc) /* MOVE */ {
2702: /* mask f1ff, bits 317c, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 5, sbitpos 0, dbitpos 9, immvalue 0 */
2703: uint16 srcdata = ipc->src;
2704: int dstreg = (ipc->opcode >> 9) & 7;
2705: uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
2706: uint16 outdata = srcdata;
2707:
2708: storeword(dstaddr, outdata);
2709:
2710: VFLAG = 0;
2711: CFLAG = 0;
2712: NFLAG = ((sint16)outdata) < 0;
2713: ZFLAG = !outdata;
2714: PC+= 6;
2715: }
2716:
2717: void cpu_op_519a(t_ipc *ipc) /* MOVE */ {
2718: /* mask f1ff, bits 31bc, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
2719: uint16 srcdata = ipc->src;
2720: int dstreg = (ipc->opcode >> 9) & 7;
2721: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
2722: uint16 outdata = srcdata;
2723:
2724: storeword(dstaddr, outdata);
2725: PC+= 6;
2726: }
2727:
2728: void cpu_op_519b(t_ipc *ipc) /* MOVE */ {
2729: /* mask f1ff, bits 31bc, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 6, sbitpos 0, dbitpos 9, immvalue 0 */
2730: uint16 srcdata = ipc->src;
2731: int dstreg = (ipc->opcode >> 9) & 7;
2732: uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
2733: uint16 outdata = srcdata;
2734:
2735: storeword(dstaddr, outdata);
2736:
2737: VFLAG = 0;
2738: CFLAG = 0;
2739: NFLAG = ((sint16)outdata) < 0;
2740: ZFLAG = !outdata;
2741: PC+= 6;
2742: }
2743:
2744: void cpu_op_520a(t_ipc *ipc) /* MOVE */ {
2745: /* mask ffff, bits 31fc, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
2746: uint16 srcdata = ipc->src;
2747: uint32 dstaddr = ipc->dst;
2748: uint16 outdata = srcdata;
2749:
2750: storeword(dstaddr, outdata);
2751: PC+= 6;
2752: }
2753:
2754: void cpu_op_520b(t_ipc *ipc) /* MOVE */ {
2755: /* mask ffff, bits 31fc, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 7, sbitpos 0, dbitpos 9, immvalue 0 */
2756: uint16 srcdata = ipc->src;
2757: uint32 dstaddr = ipc->dst;
2758: uint16 outdata = srcdata;
2759:
2760: storeword(dstaddr, outdata);
2761:
2762: VFLAG = 0;
2763: CFLAG = 0;
2764: NFLAG = ((sint16)outdata) < 0;
2765: ZFLAG = !outdata;
2766: PC+= 6;
2767: }
2768:
2769: void cpu_op_521a(t_ipc *ipc) /* MOVE */ {
2770: /* mask ffff, bits 33fc, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
2771: uint16 srcdata = ipc->src;
2772: uint32 dstaddr = ipc->dst;
2773: uint16 outdata = srcdata;
2774:
2775: storeword(dstaddr, outdata);
2776: PC+= 8;
2777: }
2778:
2779: void cpu_op_521b(t_ipc *ipc) /* MOVE */ {
2780: /* mask ffff, bits 33fc, mnemonic 21, priv 0, endblk 0, imm_notzero 0, used 0 set -2, size 2, stype 12, dtype 8, sbitpos 0, dbitpos 9, immvalue 0 */
2781: uint16 srcdata = ipc->src;
2782: uint32 dstaddr = ipc->dst;
2783: uint16 outdata = srcdata;
2784:
2785: storeword(dstaddr, outdata);
2786:
2787: VFLAG = 0;
2788: CFLAG = 0;
2789: NFLAG = ((sint16)outdata) < 0;
2790: ZFLAG = !outdata;
2791: PC+= 8;
2792: }
2793:
2794: void cpu_op_522a(t_ipc *ipc) /* MOVEA */ {
2795: /* mask f1f8, bits 3040, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 0, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2796: int srcreg = (ipc->opcode >> 0) & 7;
2797: uint16 srcdata = DATAREG(srcreg);
2798: int dstreg = (ipc->opcode >> 9) & 7;
2799:
2800: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2801: PC+= 2;
2802: }
2803:
2804: void cpu_op_523a(t_ipc *ipc) /* MOVEA */ {
2805: /* mask f1f8, bits 3048, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 1, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2806: int srcreg = (ipc->opcode >> 0) & 7;
2807: uint16 srcdata = ADDRREG(srcreg);
2808: int dstreg = (ipc->opcode >> 9) & 7;
2809:
2810: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2811: PC+= 2;
2812: }
2813:
2814: void cpu_op_524a(t_ipc *ipc) /* MOVEA */ {
2815: /* mask f1f8, bits 3050, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 2, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2816: int srcreg = (ipc->opcode >> 0) & 7;
2817: uint32 srcaddr = ADDRREG(srcreg);
2818: uint16 srcdata = fetchword(srcaddr);
2819: int dstreg = (ipc->opcode >> 9) & 7;
2820:
2821: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2822: PC+= 2;
2823: }
2824:
2825: void cpu_op_525a(t_ipc *ipc) /* MOVEA */ {
2826: /* mask f1f8, bits 3058, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 3, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2827: int srcreg = (ipc->opcode >> 0) & 7;
2828: uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
2829: uint16 srcdata = fetchword(srcaddr);
2830: int dstreg = (ipc->opcode >> 9) & 7;
2831:
2832: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2833: PC+= 2;
2834: }
2835:
2836: void cpu_op_526a(t_ipc *ipc) /* MOVEA */ {
2837: /* mask f1f8, bits 3060, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 4, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2838: int srcreg = (ipc->opcode >> 0) & 7;
2839: uint32 srcaddr = ADDRREG(srcreg)-=2;
2840: uint16 srcdata = fetchword(srcaddr);
2841: int dstreg = (ipc->opcode >> 9) & 7;
2842:
2843: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2844: PC+= 2;
2845: }
2846:
2847: void cpu_op_527a(t_ipc *ipc) /* MOVEA */ {
2848: /* mask f1f8, bits 3068, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 5, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2849: int srcreg = (ipc->opcode >> 0) & 7;
2850: uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
2851: uint16 srcdata = fetchword(srcaddr);
2852: int dstreg = (ipc->opcode >> 9) & 7;
2853:
2854: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2855: PC+= 4;
2856: }
2857:
2858: void cpu_op_528a(t_ipc *ipc) /* MOVEA */ {
2859: /* mask f1f8, bits 3070, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 6, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2860: int srcreg = (ipc->opcode >> 0) & 7;
2861: uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
2862: uint16 srcdata = fetchword(srcaddr);
2863: int dstreg = (ipc->opcode >> 9) & 7;
2864:
2865: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2866: PC+= 4;
2867: }
2868:
2869: void cpu_op_529a(t_ipc *ipc) /* MOVEA */ {
2870: /* mask f1ff, bits 3078, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 7, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2871: uint32 srcaddr = ipc->src;
2872: uint16 srcdata = fetchword(srcaddr);
2873: int dstreg = (ipc->opcode >> 9) & 7;
2874:
2875: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2876: PC+= 4;
2877: }
2878:
2879: void cpu_op_530a(t_ipc *ipc) /* MOVEA */ {
2880: /* mask f1ff, bits 3079, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 8, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2881: uint32 srcaddr = ipc->src;
2882: uint16 srcdata = fetchword(srcaddr);
2883: int dstreg = (ipc->opcode >> 9) & 7;
2884:
2885: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2886: PC+= 6;
2887: }
2888:
2889: void cpu_op_531a(t_ipc *ipc) /* MOVEA */ {
2890: /* mask f1ff, bits 307a, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 9, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2891: uint32 srcaddr = ipc->src;
2892: uint16 srcdata = fetchword(srcaddr);
2893: int dstreg = (ipc->opcode >> 9) & 7;
2894:
2895: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2896: PC+= 4;
2897: }
2898:
2899: void cpu_op_532a(t_ipc *ipc) /* MOVEA */ {
2900: /* mask f1ff, bits 307b, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 10, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2901: uint32 srcaddr = idxval_src(ipc);
2902: uint16 srcdata = fetchword(srcaddr);
2903: int dstreg = (ipc->opcode >> 9) & 7;
2904:
2905: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2906: PC+= 4;
2907: }
2908:
2909: void cpu_op_533a(t_ipc *ipc) /* MOVEA */ {
2910: /* mask f1ff, bits 307c, mnemonic 22, priv 0, endblk 0, imm_notzero 0, used 0 set 0, size 2, stype 12, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
2911: uint16 srcdata = ipc->src;
2912: int dstreg = (ipc->opcode >> 9) & 7;
2913:
2914: ADDRREG(dstreg) = (sint32)(sint16)srcdata;
2915: PC+= 4;
2916: }
2917:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.