1 /* Simulator instruction semantics for xstormy16.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 2000-2010 Red Hat, Inc.
7 This file is part of the Red Hat simulators.
16 #include "xstormy16.h"
18 using namespace xstormy16; // FIXME: namespace organization still wip
19 #define GET_ATTR(name) GET_ATTR_##name ()
22 // ********** x-invalid: --invalid--
25 xstormy16_sem_x_invalid (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
27 #define FLD(f) abuf->fields.fmt_empty.f
28 sem_status status = SEM_STATUS_NORMAL;
29 xstormy16_scache* abuf = sem;
30 PCADDR pc = abuf->addr;
34 current_cpu->invalid_insn (pc);
39 current_cpu->done_insn (npc, status);
44 // ********** movlmemimm: mov$ws2 $lmem8,#$imm16
47 xstormy16_sem_movlmemimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
49 #define FLD(f) abuf->fields.sfmt_movlmemimm.f
50 sem_status status = SEM_STATUS_NORMAL;
51 xstormy16_scache* abuf = sem;
52 PCADDR pc = abuf->addr;
58 tmp_nvalue = FLD (f_imm16);
60 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6))));
61 if (UNLIKELY(current_cpu->trace_result_p))
62 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
63 current_cpu->h_gr_set (((UINT) 14), opval);
66 HI opval = tmp_nvalue;
67 if (UNLIKELY(current_cpu->trace_result_p))
68 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (FLD (f_lmem8), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
69 current_cpu->SETMEMHI (pc, ANDSI (FLD (f_lmem8), 65534), opval);
75 tmp_nvalue = ANDSI (FLD (f_imm16), 255);
77 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6))));
78 if (UNLIKELY(current_cpu->trace_result_p))
79 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
80 current_cpu->h_gr_set (((UINT) 14), opval);
83 QI opval = tmp_nvalue;
84 if (UNLIKELY(current_cpu->trace_result_p))
85 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) FLD (f_lmem8) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
86 current_cpu->SETMEMQI (pc, FLD (f_lmem8), opval);
91 current_cpu->done_insn (npc, status);
96 // ********** movhmemimm: mov$ws2 $hmem8,#$imm16
99 xstormy16_sem_movhmemimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
101 #define FLD(f) abuf->fields.sfmt_movhmemimm.f
102 sem_status status = SEM_STATUS_NORMAL;
103 xstormy16_scache* abuf = sem;
104 PCADDR pc = abuf->addr;
110 tmp_nvalue = FLD (f_imm16);
112 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6))));
113 if (UNLIKELY(current_cpu->trace_result_p))
114 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
115 current_cpu->h_gr_set (((UINT) 14), opval);
118 HI opval = tmp_nvalue;
119 if (UNLIKELY(current_cpu->trace_result_p))
120 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (FLD (f_hmem8), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
121 current_cpu->SETMEMHI (pc, ANDSI (FLD (f_hmem8), 65534), opval);
127 tmp_nvalue = ANDSI (FLD (f_imm16), 255);
129 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6))));
130 if (UNLIKELY(current_cpu->trace_result_p))
131 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
132 current_cpu->h_gr_set (((UINT) 14), opval);
135 QI opval = tmp_nvalue;
136 if (UNLIKELY(current_cpu->trace_result_p))
137 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) FLD (f_hmem8) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
138 current_cpu->SETMEMQI (pc, FLD (f_hmem8), opval);
143 current_cpu->done_insn (npc, status);
148 // ********** movlgrmem: mov$ws2 $Rm,$lmem8
151 xstormy16_sem_movlgrmem (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
153 #define FLD(f) abuf->fields.sfmt_movlgrmem.f
154 sem_status status = SEM_STATUS_NORMAL;
155 xstormy16_scache* abuf = sem;
156 PCADDR pc = abuf->addr;
162 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (FLD (f_lmem8), 65534));
164 HI opval = tmp_nvalue;
165 if (UNLIKELY(current_cpu->trace_result_p))
166 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rm) << ']' << ":=0x" << hex << opval << dec << " ";
167 current_cpu->h_gr_set (FLD (f_Rm), opval);
170 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
171 if (UNLIKELY(current_cpu->trace_result_p))
172 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
173 current_cpu->h_gr_set (((UINT) 14), opval);
179 tmp_nvalue = current_cpu->GETMEMQI (pc, FLD (f_lmem8));
181 HI opval = tmp_nvalue;
182 if (UNLIKELY(current_cpu->trace_result_p))
183 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rm) << ']' << ":=0x" << hex << opval << dec << " ";
184 current_cpu->h_gr_set (FLD (f_Rm), opval);
187 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
188 if (UNLIKELY(current_cpu->trace_result_p))
189 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
190 current_cpu->h_gr_set (((UINT) 14), opval);
195 current_cpu->done_insn (npc, status);
200 // ********** movhgrmem: mov$ws2 $Rm,$hmem8
203 xstormy16_sem_movhgrmem (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
205 #define FLD(f) abuf->fields.sfmt_movhgrmem.f
206 sem_status status = SEM_STATUS_NORMAL;
207 xstormy16_scache* abuf = sem;
208 PCADDR pc = abuf->addr;
214 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (FLD (f_hmem8), 65534));
216 HI opval = tmp_nvalue;
217 if (UNLIKELY(current_cpu->trace_result_p))
218 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rm) << ']' << ":=0x" << hex << opval << dec << " ";
219 current_cpu->h_gr_set (FLD (f_Rm), opval);
222 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
223 if (UNLIKELY(current_cpu->trace_result_p))
224 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
225 current_cpu->h_gr_set (((UINT) 14), opval);
231 tmp_nvalue = current_cpu->GETMEMQI (pc, FLD (f_hmem8));
233 HI opval = tmp_nvalue;
234 if (UNLIKELY(current_cpu->trace_result_p))
235 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rm) << ']' << ":=0x" << hex << opval << dec << " ";
236 current_cpu->h_gr_set (FLD (f_Rm), opval);
239 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
240 if (UNLIKELY(current_cpu->trace_result_p))
241 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
242 current_cpu->h_gr_set (((UINT) 14), opval);
247 current_cpu->done_insn (npc, status);
252 // ********** movlmemgr: mov$ws2 $lmem8,$Rm
255 xstormy16_sem_movlmemgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
257 #define FLD(f) abuf->fields.sfmt_movlgrmem.f
258 sem_status status = SEM_STATUS_NORMAL;
259 xstormy16_scache* abuf = sem;
260 PCADDR pc = abuf->addr;
266 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rm));
268 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6))));
269 if (UNLIKELY(current_cpu->trace_result_p))
270 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
271 current_cpu->h_gr_set (((UINT) 14), opval);
274 HI opval = tmp_nvalue;
275 if (UNLIKELY(current_cpu->trace_result_p))
276 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (FLD (f_lmem8), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
277 current_cpu->SETMEMHI (pc, ANDSI (FLD (f_lmem8), 65534), opval);
283 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rm));
285 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6))));
286 if (UNLIKELY(current_cpu->trace_result_p))
287 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
288 current_cpu->h_gr_set (((UINT) 14), opval);
291 QI opval = tmp_nvalue;
292 if (UNLIKELY(current_cpu->trace_result_p))
293 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) FLD (f_lmem8) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
294 current_cpu->SETMEMQI (pc, FLD (f_lmem8), opval);
299 current_cpu->done_insn (npc, status);
304 // ********** movhmemgr: mov$ws2 $hmem8,$Rm
307 xstormy16_sem_movhmemgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
309 #define FLD(f) abuf->fields.sfmt_movhgrmem.f
310 sem_status status = SEM_STATUS_NORMAL;
311 xstormy16_scache* abuf = sem;
312 PCADDR pc = abuf->addr;
318 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rm));
320 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6))));
321 if (UNLIKELY(current_cpu->trace_result_p))
322 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
323 current_cpu->h_gr_set (((UINT) 14), opval);
326 HI opval = tmp_nvalue;
327 if (UNLIKELY(current_cpu->trace_result_p))
328 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (FLD (f_hmem8), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
329 current_cpu->SETMEMHI (pc, ANDSI (FLD (f_hmem8), 65534), opval);
335 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rm));
337 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6))));
338 if (UNLIKELY(current_cpu->trace_result_p))
339 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
340 current_cpu->h_gr_set (((UINT) 14), opval);
343 QI opval = tmp_nvalue;
344 if (UNLIKELY(current_cpu->trace_result_p))
345 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) FLD (f_hmem8) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
346 current_cpu->SETMEMQI (pc, FLD (f_hmem8), opval);
351 current_cpu->done_insn (npc, status);
356 // ********** movgrgri: mov$ws2 $Rdm,($Rs)
359 xstormy16_sem_movgrgri (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
361 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
362 sem_status status = SEM_STATUS_NORMAL;
363 xstormy16_scache* abuf = sem;
364 PCADDR pc = abuf->addr;
370 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 65534));
372 HI opval = tmp_nvalue;
373 if (UNLIKELY(current_cpu->trace_result_p))
374 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
375 current_cpu->h_gr_set (FLD (f_Rdm), opval);
378 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
379 if (UNLIKELY(current_cpu->trace_result_p))
380 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
381 current_cpu->h_gr_set (((UINT) 14), opval);
387 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, current_cpu->h_gr_get (FLD (f_Rs))));
389 HI opval = tmp_nvalue;
390 if (UNLIKELY(current_cpu->trace_result_p))
391 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
392 current_cpu->h_gr_set (FLD (f_Rdm), opval);
395 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
396 if (UNLIKELY(current_cpu->trace_result_p))
397 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
398 current_cpu->h_gr_set (((UINT) 14), opval);
403 current_cpu->done_insn (npc, status);
408 // ********** movgrgripostinc: mov$ws2 $Rdm,($Rs++)
411 xstormy16_sem_movgrgripostinc (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
413 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
414 sem_status status = SEM_STATUS_NORMAL;
415 xstormy16_scache* abuf = sem;
416 PCADDR pc = abuf->addr;
423 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 65534));
425 HI opval = tmp_nvalue;
426 if (UNLIKELY(current_cpu->trace_result_p))
427 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
428 current_cpu->h_gr_set (FLD (f_Rdm), opval);
431 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
432 if (UNLIKELY(current_cpu->trace_result_p))
433 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
434 current_cpu->h_gr_set (((UINT) 14), opval);
440 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, current_cpu->h_gr_get (FLD (f_Rs))));
442 HI opval = tmp_nvalue;
443 if (UNLIKELY(current_cpu->trace_result_p))
444 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
445 current_cpu->h_gr_set (FLD (f_Rdm), opval);
448 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
449 if (UNLIKELY(current_cpu->trace_result_p))
450 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
451 current_cpu->h_gr_set (((UINT) 14), opval);
456 SI opval = ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (1, FLD (f_op2m)));
457 if (UNLIKELY(current_cpu->trace_result_p))
458 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
459 current_cpu->h_gr_set (FLD (f_Rs), opval);
463 current_cpu->done_insn (npc, status);
468 // ********** movgrgripredec: mov$ws2 $Rdm,(--$Rs)
471 xstormy16_sem_movgrgripredec (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
473 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
474 sem_status status = SEM_STATUS_NORMAL;
475 xstormy16_scache* abuf = sem;
476 PCADDR pc = abuf->addr;
481 SI opval = SUBSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (1, FLD (f_op2m)));
482 if (UNLIKELY(current_cpu->trace_result_p))
483 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
484 current_cpu->h_gr_set (FLD (f_Rs), opval);
489 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 65534));
491 HI opval = tmp_nvalue;
492 if (UNLIKELY(current_cpu->trace_result_p))
493 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
494 current_cpu->h_gr_set (FLD (f_Rdm), opval);
497 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
498 if (UNLIKELY(current_cpu->trace_result_p))
499 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
500 current_cpu->h_gr_set (((UINT) 14), opval);
506 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, current_cpu->h_gr_get (FLD (f_Rs))));
508 HI opval = tmp_nvalue;
509 if (UNLIKELY(current_cpu->trace_result_p))
510 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
511 current_cpu->h_gr_set (FLD (f_Rdm), opval);
514 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
515 if (UNLIKELY(current_cpu->trace_result_p))
516 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
517 current_cpu->h_gr_set (((UINT) 14), opval);
523 current_cpu->done_insn (npc, status);
528 // ********** movgrigr: mov$ws2 ($Rs),$Rdm
531 xstormy16_sem_movgrigr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
533 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
534 sem_status status = SEM_STATUS_NORMAL;
535 xstormy16_scache* abuf = sem;
536 PCADDR pc = abuf->addr;
542 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
543 if (UNLIKELY(current_cpu->trace_result_p))
544 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
545 current_cpu->SETMEMHI (pc, ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 65534), opval);
549 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
550 if (UNLIKELY(current_cpu->trace_result_p))
551 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) current_cpu->h_gr_get (FLD (f_Rs)) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
552 current_cpu->SETMEMQI (pc, current_cpu->h_gr_get (FLD (f_Rs)), opval);
557 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
559 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
560 if (UNLIKELY(current_cpu->trace_result_p))
561 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
562 current_cpu->h_gr_set (((UINT) 14), opval);
567 current_cpu->done_insn (npc, status);
572 // ********** movgripostincgr: mov$ws2 ($Rs++),$Rdm
575 xstormy16_sem_movgripostincgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
577 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
578 sem_status status = SEM_STATUS_NORMAL;
579 xstormy16_scache* abuf = sem;
580 PCADDR pc = abuf->addr;
586 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
587 if (UNLIKELY(current_cpu->trace_result_p))
588 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
589 current_cpu->SETMEMHI (pc, ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 65534), opval);
593 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
594 if (UNLIKELY(current_cpu->trace_result_p))
595 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) current_cpu->h_gr_get (FLD (f_Rs)) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
596 current_cpu->SETMEMQI (pc, current_cpu->h_gr_get (FLD (f_Rs)), opval);
601 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
603 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
604 if (UNLIKELY(current_cpu->trace_result_p))
605 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
606 current_cpu->h_gr_set (((UINT) 14), opval);
610 SI opval = ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (FLD (f_op2m), 1));
611 if (UNLIKELY(current_cpu->trace_result_p))
612 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
613 current_cpu->h_gr_set (FLD (f_Rs), opval);
617 current_cpu->done_insn (npc, status);
622 // ********** movgripredecgr: mov$ws2 (--$Rs),$Rdm
625 xstormy16_sem_movgripredecgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
627 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
628 sem_status status = SEM_STATUS_NORMAL;
629 xstormy16_scache* abuf = sem;
630 PCADDR pc = abuf->addr;
635 SI opval = SUBSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (FLD (f_op2m), 1));
636 if (UNLIKELY(current_cpu->trace_result_p))
637 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
638 current_cpu->h_gr_set (FLD (f_Rs), opval);
642 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
644 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
645 if (UNLIKELY(current_cpu->trace_result_p))
646 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
647 current_cpu->h_gr_set (((UINT) 14), opval);
652 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
653 if (UNLIKELY(current_cpu->trace_result_p))
654 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
655 current_cpu->SETMEMHI (pc, ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 65534), opval);
659 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
660 if (UNLIKELY(current_cpu->trace_result_p))
661 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) current_cpu->h_gr_get (FLD (f_Rs)) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
662 current_cpu->SETMEMQI (pc, current_cpu->h_gr_get (FLD (f_Rs)), opval);
667 current_cpu->done_insn (npc, status);
672 // ********** movgrgrii: mov$ws2 $Rdm,($Rs,$imm12)
675 xstormy16_sem_movgrgrii (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
677 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
678 sem_status status = SEM_STATUS_NORMAL;
679 xstormy16_scache* abuf = sem;
680 PCADDR pc = abuf->addr;
686 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), 65534));
688 HI opval = tmp_nvalue;
689 if (UNLIKELY(current_cpu->trace_result_p))
690 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
691 current_cpu->h_gr_set (FLD (f_Rdm), opval);
694 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
695 if (UNLIKELY(current_cpu->trace_result_p))
696 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
697 current_cpu->h_gr_set (((UINT) 14), opval);
703 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12))));
705 HI opval = tmp_nvalue;
706 if (UNLIKELY(current_cpu->trace_result_p))
707 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
708 current_cpu->h_gr_set (FLD (f_Rdm), opval);
711 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
712 if (UNLIKELY(current_cpu->trace_result_p))
713 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
714 current_cpu->h_gr_set (((UINT) 14), opval);
719 current_cpu->done_insn (npc, status);
724 // ********** movgrgriipostinc: mov$ws2 $Rdm,($Rs++,$imm12)
727 xstormy16_sem_movgrgriipostinc (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
729 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
730 sem_status status = SEM_STATUS_NORMAL;
731 xstormy16_scache* abuf = sem;
732 PCADDR pc = abuf->addr;
739 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), 65534));
741 HI opval = tmp_nvalue;
742 if (UNLIKELY(current_cpu->trace_result_p))
743 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
744 current_cpu->h_gr_set (FLD (f_Rdm), opval);
747 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
748 if (UNLIKELY(current_cpu->trace_result_p))
749 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
750 current_cpu->h_gr_set (((UINT) 14), opval);
756 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12))));
758 HI opval = tmp_nvalue;
759 if (UNLIKELY(current_cpu->trace_result_p))
760 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
761 current_cpu->h_gr_set (FLD (f_Rdm), opval);
764 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
765 if (UNLIKELY(current_cpu->trace_result_p))
766 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
767 current_cpu->h_gr_set (((UINT) 14), opval);
772 SI opval = ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (FLD (f_op2m), 1));
773 if (UNLIKELY(current_cpu->trace_result_p))
774 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
775 current_cpu->h_gr_set (FLD (f_Rs), opval);
779 current_cpu->done_insn (npc, status);
784 // ********** movgrgriipredec: mov$ws2 $Rdm,(--$Rs,$imm12)
787 xstormy16_sem_movgrgriipredec (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
789 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
790 sem_status status = SEM_STATUS_NORMAL;
791 xstormy16_scache* abuf = sem;
792 PCADDR pc = abuf->addr;
797 SI opval = SUBSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (FLD (f_op2m), 1));
798 if (UNLIKELY(current_cpu->trace_result_p))
799 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
800 current_cpu->h_gr_set (FLD (f_Rs), opval);
805 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), 65534));
807 HI opval = tmp_nvalue;
808 if (UNLIKELY(current_cpu->trace_result_p))
809 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
810 current_cpu->h_gr_set (FLD (f_Rdm), opval);
813 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
814 if (UNLIKELY(current_cpu->trace_result_p))
815 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
816 current_cpu->h_gr_set (((UINT) 14), opval);
822 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12))));
824 HI opval = tmp_nvalue;
825 if (UNLIKELY(current_cpu->trace_result_p))
826 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
827 current_cpu->h_gr_set (FLD (f_Rdm), opval);
830 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
831 if (UNLIKELY(current_cpu->trace_result_p))
832 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
833 current_cpu->h_gr_set (((UINT) 14), opval);
839 current_cpu->done_insn (npc, status);
844 // ********** movgriigr: mov$ws2 ($Rs,$imm12),$Rdm
847 xstormy16_sem_movgriigr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
849 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
850 sem_status status = SEM_STATUS_NORMAL;
851 xstormy16_scache* abuf = sem;
852 PCADDR pc = abuf->addr;
858 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
859 if (UNLIKELY(current_cpu->trace_result_p))
860 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
861 current_cpu->SETMEMHI (pc, ANDSI (ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), 65534), opval);
865 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
866 if (UNLIKELY(current_cpu->trace_result_p))
867 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
868 current_cpu->SETMEMQI (pc, ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), opval);
873 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
875 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
876 if (UNLIKELY(current_cpu->trace_result_p))
877 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
878 current_cpu->h_gr_set (((UINT) 14), opval);
883 current_cpu->done_insn (npc, status);
888 // ********** movgriipostincgr: mov$ws2 ($Rs++,$imm12),$Rdm
891 xstormy16_sem_movgriipostincgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
893 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
894 sem_status status = SEM_STATUS_NORMAL;
895 xstormy16_scache* abuf = sem;
896 PCADDR pc = abuf->addr;
902 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
903 if (UNLIKELY(current_cpu->trace_result_p))
904 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
905 current_cpu->SETMEMHI (pc, ANDSI (ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), 65534), opval);
909 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
910 if (UNLIKELY(current_cpu->trace_result_p))
911 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
912 current_cpu->SETMEMQI (pc, ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), opval);
917 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
919 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
920 if (UNLIKELY(current_cpu->trace_result_p))
921 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
922 current_cpu->h_gr_set (((UINT) 14), opval);
926 SI opval = ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), 1);
927 if (UNLIKELY(current_cpu->trace_result_p))
928 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
929 current_cpu->h_gr_set (FLD (f_Rs), opval);
933 current_cpu->done_insn (npc, status);
938 // ********** movgriipredecgr: mov$ws2 (--$Rs,$imm12),$Rdm
941 xstormy16_sem_movgriipredecgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
943 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
944 sem_status status = SEM_STATUS_NORMAL;
945 xstormy16_scache* abuf = sem;
946 PCADDR pc = abuf->addr;
951 SI opval = SUBSI (current_cpu->h_gr_get (FLD (f_Rs)), 1);
952 if (UNLIKELY(current_cpu->trace_result_p))
953 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
954 current_cpu->h_gr_set (FLD (f_Rs), opval);
958 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
960 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
961 if (UNLIKELY(current_cpu->trace_result_p))
962 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
963 current_cpu->h_gr_set (((UINT) 14), opval);
968 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
969 if (UNLIKELY(current_cpu->trace_result_p))
970 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
971 current_cpu->SETMEMHI (pc, ANDSI (ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), 65534), opval);
975 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
976 if (UNLIKELY(current_cpu->trace_result_p))
977 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
978 current_cpu->SETMEMQI (pc, ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), FLD (f_imm12)), opval);
983 current_cpu->done_insn (npc, status);
988 // ********** movgrgr: mov $Rd,$Rs
991 xstormy16_sem_movgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
993 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
994 sem_status status = SEM_STATUS_NORMAL;
995 xstormy16_scache* abuf = sem;
996 PCADDR pc = abuf->addr;
1001 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rs));
1003 HI opval = tmp_nvalue;
1004 if (UNLIKELY(current_cpu->trace_result_p))
1005 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
1006 current_cpu->h_gr_set (FLD (f_Rd), opval);
1009 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
1010 if (UNLIKELY(current_cpu->trace_result_p))
1011 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1012 current_cpu->h_gr_set (((UINT) 14), opval);
1016 current_cpu->done_insn (npc, status);
1021 // ********** movwimm8: mov.w Rx,#$imm8
1024 xstormy16_sem_movwimm8 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1026 #define FLD(f) abuf->fields.sfmt_bccgrimm8.f
1027 sem_status status = SEM_STATUS_NORMAL;
1028 xstormy16_scache* abuf = sem;
1029 PCADDR pc = abuf->addr;
1030 PCADDR npc = pc + 2;
1034 tmp_nvalue = FLD (f_imm8);
1036 HI opval = tmp_nvalue;
1037 if (UNLIKELY(current_cpu->trace_result_p))
1038 current_cpu->trace_stream << "gr" << '[' << current_cpu->h_Rpsw_get () << ']' << ":=0x" << hex << opval << dec << " ";
1039 current_cpu->h_gr_set (current_cpu->h_Rpsw_get (), opval);
1042 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (current_cpu->h_Rpsw_get (), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
1043 if (UNLIKELY(current_cpu->trace_result_p))
1044 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1045 current_cpu->h_gr_set (((UINT) 14), opval);
1049 current_cpu->done_insn (npc, status);
1054 // ********** movwgrimm8: mov.w $Rm,#$imm8small
1057 xstormy16_sem_movwgrimm8 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1059 #define FLD(f) abuf->fields.sfmt_bccgrimm8.f
1060 sem_status status = SEM_STATUS_NORMAL;
1061 xstormy16_scache* abuf = sem;
1062 PCADDR pc = abuf->addr;
1063 PCADDR npc = pc + 2;
1067 tmp_nvalue = FLD (f_imm8);
1069 HI opval = tmp_nvalue;
1070 if (UNLIKELY(current_cpu->trace_result_p))
1071 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rm) << ']' << ":=0x" << hex << opval << dec << " ";
1072 current_cpu->h_gr_set (FLD (f_Rm), opval);
1075 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
1076 if (UNLIKELY(current_cpu->trace_result_p))
1077 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1078 current_cpu->h_gr_set (((UINT) 14), opval);
1082 current_cpu->done_insn (npc, status);
1087 // ********** movwgrimm16: mov.w $Rd,#$imm16
1090 xstormy16_sem_movwgrimm16 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1092 #define FLD(f) abuf->fields.sfmt_movwgrimm16.f
1093 sem_status status = SEM_STATUS_NORMAL;
1094 xstormy16_scache* abuf = sem;
1095 PCADDR pc = abuf->addr;
1096 PCADDR npc = pc + 4;
1100 tmp_nvalue = FLD (f_imm16);
1102 HI opval = tmp_nvalue;
1103 if (UNLIKELY(current_cpu->trace_result_p))
1104 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
1105 current_cpu->h_gr_set (FLD (f_Rd), opval);
1108 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
1109 if (UNLIKELY(current_cpu->trace_result_p))
1110 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1111 current_cpu->h_gr_set (((UINT) 14), opval);
1115 current_cpu->done_insn (npc, status);
1120 // ********** movlowgr: mov.b $Rd,RxL
1123 xstormy16_sem_movlowgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1125 #define FLD(f) abuf->fields.sfmt_jmp.f
1126 sem_status status = SEM_STATUS_NORMAL;
1127 xstormy16_scache* abuf = sem;
1128 PCADDR pc = abuf->addr;
1129 PCADDR npc = pc + 2;
1133 tmp_nvalue = ORSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 65280), ANDHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), 255));
1135 HI opval = tmp_nvalue;
1136 if (UNLIKELY(current_cpu->trace_result_p))
1137 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
1138 current_cpu->h_gr_set (FLD (f_Rd), opval);
1141 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (0, 8)), 0), 6)))));
1142 if (UNLIKELY(current_cpu->trace_result_p))
1143 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1144 current_cpu->h_gr_set (((UINT) 14), opval);
1148 current_cpu->done_insn (npc, status);
1153 // ********** movhighgr: mov.b $Rd,RxH
1156 xstormy16_sem_movhighgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1158 #define FLD(f) abuf->fields.sfmt_jmp.f
1159 sem_status status = SEM_STATUS_NORMAL;
1160 xstormy16_scache* abuf = sem;
1161 PCADDR pc = abuf->addr;
1162 PCADDR npc = pc + 2;
1166 tmp_nvalue = ORSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 255), ANDHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), 65280));
1168 HI opval = tmp_nvalue;
1169 if (UNLIKELY(current_cpu->trace_result_p))
1170 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
1171 current_cpu->h_gr_set (FLD (f_Rd), opval);
1174 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
1175 if (UNLIKELY(current_cpu->trace_result_p))
1176 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1177 current_cpu->h_gr_set (((UINT) 14), opval);
1181 current_cpu->done_insn (npc, status);
1186 // ********** movfgrgri: movf$ws2 $Rdm,($Rs)
1189 xstormy16_sem_movfgrgri (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1191 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1192 sem_status status = SEM_STATUS_NORMAL;
1193 xstormy16_scache* abuf = sem;
1194 PCADDR pc = abuf->addr;
1195 PCADDR npc = pc + 2;
1200 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (ORSI (SLLSI (current_cpu->h_gr_get (((UINT) 8)), 16), current_cpu->h_gr_get (FLD (f_Rs))), 65534));
1202 HI opval = tmp_nvalue;
1203 if (UNLIKELY(current_cpu->trace_result_p))
1204 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1205 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1208 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1209 if (UNLIKELY(current_cpu->trace_result_p))
1210 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1211 current_cpu->h_gr_set (((UINT) 14), opval);
1217 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, ORSI (SLLSI (current_cpu->h_gr_get (((UINT) 8)), 16), current_cpu->h_gr_get (FLD (f_Rs)))));
1219 HI opval = tmp_nvalue;
1220 if (UNLIKELY(current_cpu->trace_result_p))
1221 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1222 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1225 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1226 if (UNLIKELY(current_cpu->trace_result_p))
1227 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1228 current_cpu->h_gr_set (((UINT) 14), opval);
1233 current_cpu->done_insn (npc, status);
1238 // ********** movfgrgripostinc: movf$ws2 $Rdm,($Rs++)
1241 xstormy16_sem_movfgrgripostinc (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1243 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1244 sem_status status = SEM_STATUS_NORMAL;
1245 xstormy16_scache* abuf = sem;
1246 PCADDR pc = abuf->addr;
1247 PCADDR npc = pc + 2;
1253 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))), 65534));
1255 HI opval = tmp_nvalue;
1256 if (UNLIKELY(current_cpu->trace_result_p))
1257 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1258 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1261 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1262 if (UNLIKELY(current_cpu->trace_result_p))
1263 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1264 current_cpu->h_gr_set (((UINT) 14), opval);
1270 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs)))));
1272 HI opval = tmp_nvalue;
1273 if (UNLIKELY(current_cpu->trace_result_p))
1274 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1275 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1278 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1279 if (UNLIKELY(current_cpu->trace_result_p))
1280 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1281 current_cpu->h_gr_set (((UINT) 14), opval);
1286 SI opval = ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (FLD (f_op2m), 1));
1287 if (UNLIKELY(current_cpu->trace_result_p))
1288 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
1289 current_cpu->h_gr_set (FLD (f_Rs), opval);
1293 current_cpu->done_insn (npc, status);
1298 // ********** movfgrgripredec: movf$ws2 $Rdm,(--$Rs)
1301 xstormy16_sem_movfgrgripredec (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1303 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1304 sem_status status = SEM_STATUS_NORMAL;
1305 xstormy16_scache* abuf = sem;
1306 PCADDR pc = abuf->addr;
1307 PCADDR npc = pc + 2;
1311 SI opval = SUBSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (FLD (f_op2m), 1));
1312 if (UNLIKELY(current_cpu->trace_result_p))
1313 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
1314 current_cpu->h_gr_set (FLD (f_Rs), opval);
1319 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))), 65534));
1321 HI opval = tmp_nvalue;
1322 if (UNLIKELY(current_cpu->trace_result_p))
1323 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1324 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1327 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1328 if (UNLIKELY(current_cpu->trace_result_p))
1329 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1330 current_cpu->h_gr_set (((UINT) 14), opval);
1336 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs)))));
1338 HI opval = tmp_nvalue;
1339 if (UNLIKELY(current_cpu->trace_result_p))
1340 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1341 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1344 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1345 if (UNLIKELY(current_cpu->trace_result_p))
1346 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1347 current_cpu->h_gr_set (((UINT) 14), opval);
1353 current_cpu->done_insn (npc, status);
1358 // ********** movfgrigr: movf$ws2 ($Rs),$Rdm
1361 xstormy16_sem_movfgrigr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1363 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1364 sem_status status = SEM_STATUS_NORMAL;
1365 xstormy16_scache* abuf = sem;
1366 PCADDR pc = abuf->addr;
1367 PCADDR npc = pc + 2;
1372 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1373 if (UNLIKELY(current_cpu->trace_result_p))
1374 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
1375 current_cpu->SETMEMHI (pc, ANDSI (JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))), 65534), opval);
1379 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1380 if (UNLIKELY(current_cpu->trace_result_p))
1381 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
1382 current_cpu->SETMEMQI (pc, JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))), opval);
1387 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
1389 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1390 if (UNLIKELY(current_cpu->trace_result_p))
1391 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1392 current_cpu->h_gr_set (((UINT) 14), opval);
1397 current_cpu->done_insn (npc, status);
1402 // ********** movfgripostincgr: movf$ws2 ($Rs++),$Rdm
1405 xstormy16_sem_movfgripostincgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1407 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1408 sem_status status = SEM_STATUS_NORMAL;
1409 xstormy16_scache* abuf = sem;
1410 PCADDR pc = abuf->addr;
1411 PCADDR npc = pc + 2;
1416 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1417 if (UNLIKELY(current_cpu->trace_result_p))
1418 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
1419 current_cpu->SETMEMHI (pc, ANDSI (JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))), 65534), opval);
1423 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1424 if (UNLIKELY(current_cpu->trace_result_p))
1425 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
1426 current_cpu->SETMEMQI (pc, JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))), opval);
1431 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
1433 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1434 if (UNLIKELY(current_cpu->trace_result_p))
1435 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1436 current_cpu->h_gr_set (((UINT) 14), opval);
1440 SI opval = ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (FLD (f_op2m), 1));
1441 if (UNLIKELY(current_cpu->trace_result_p))
1442 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
1443 current_cpu->h_gr_set (FLD (f_Rs), opval);
1447 current_cpu->done_insn (npc, status);
1452 // ********** movfgripredecgr: movf$ws2 (--$Rs),$Rdm
1455 xstormy16_sem_movfgripredecgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1457 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1458 sem_status status = SEM_STATUS_NORMAL;
1459 xstormy16_scache* abuf = sem;
1460 PCADDR pc = abuf->addr;
1461 PCADDR npc = pc + 2;
1466 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
1468 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1469 if (UNLIKELY(current_cpu->trace_result_p))
1470 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1471 current_cpu->h_gr_set (((UINT) 14), opval);
1475 SI opval = SUBSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (FLD (f_op2m), 1));
1476 if (UNLIKELY(current_cpu->trace_result_p))
1477 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
1478 current_cpu->h_gr_set (FLD (f_Rs), opval);
1482 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1483 if (UNLIKELY(current_cpu->trace_result_p))
1484 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))), 65534) << dec << ']' << ":=0x" << hex << opval << dec << " ";
1485 current_cpu->SETMEMHI (pc, ANDSI (JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))), 65534), opval);
1489 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1490 if (UNLIKELY(current_cpu->trace_result_p))
1491 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
1492 current_cpu->SETMEMQI (pc, JOINHISI (current_cpu->h_gr_get (((UINT) 8)), current_cpu->h_gr_get (FLD (f_Rs))), opval);
1497 current_cpu->done_insn (npc, status);
1502 // ********** movfgrgrii: movf$ws2 $Rdm,($Rb,$Rs,$imm12)
1505 xstormy16_sem_movfgrgrii (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1507 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1508 sem_status status = SEM_STATUS_NORMAL;
1509 xstormy16_scache* abuf = sem;
1510 PCADDR pc = abuf->addr;
1511 PCADDR npc = pc + 4;
1516 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), 65534));
1518 HI opval = tmp_nvalue;
1519 if (UNLIKELY(current_cpu->trace_result_p))
1520 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1521 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1524 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1525 if (UNLIKELY(current_cpu->trace_result_p))
1526 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1527 current_cpu->h_gr_set (((UINT) 14), opval);
1533 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12))));
1535 HI opval = tmp_nvalue;
1536 if (UNLIKELY(current_cpu->trace_result_p))
1537 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1538 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1541 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1542 if (UNLIKELY(current_cpu->trace_result_p))
1543 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1544 current_cpu->h_gr_set (((UINT) 14), opval);
1549 current_cpu->done_insn (npc, status);
1554 // ********** movfgrgriipostinc: movf$ws2 $Rdm,($Rb,$Rs++,$imm12)
1557 xstormy16_sem_movfgrgriipostinc (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1559 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1560 sem_status status = SEM_STATUS_NORMAL;
1561 xstormy16_scache* abuf = sem;
1562 PCADDR pc = abuf->addr;
1563 PCADDR npc = pc + 4;
1569 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), 65534));
1571 HI opval = tmp_nvalue;
1572 if (UNLIKELY(current_cpu->trace_result_p))
1573 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1574 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1577 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1578 if (UNLIKELY(current_cpu->trace_result_p))
1579 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1580 current_cpu->h_gr_set (((UINT) 14), opval);
1586 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12))));
1588 HI opval = tmp_nvalue;
1589 if (UNLIKELY(current_cpu->trace_result_p))
1590 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1591 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1594 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1595 if (UNLIKELY(current_cpu->trace_result_p))
1596 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1597 current_cpu->h_gr_set (((UINT) 14), opval);
1602 SI opval = ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (FLD (f_op2m), 1));
1603 if (UNLIKELY(current_cpu->trace_result_p))
1604 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
1605 current_cpu->h_gr_set (FLD (f_Rs), opval);
1609 current_cpu->done_insn (npc, status);
1614 // ********** movfgrgriipredec: movf$ws2 $Rdm,($Rb,--$Rs,$imm12)
1617 xstormy16_sem_movfgrgriipredec (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1619 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1620 sem_status status = SEM_STATUS_NORMAL;
1621 xstormy16_scache* abuf = sem;
1622 PCADDR pc = abuf->addr;
1623 PCADDR npc = pc + 4;
1627 SI opval = SUBSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (FLD (f_op2m), 1));
1628 if (UNLIKELY(current_cpu->trace_result_p))
1629 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
1630 current_cpu->h_gr_set (FLD (f_Rs), opval);
1635 tmp_nvalue = current_cpu->GETMEMHI (pc, ANDSI (ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), 65534));
1637 HI opval = tmp_nvalue;
1638 if (UNLIKELY(current_cpu->trace_result_p))
1639 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1640 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1643 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1644 if (UNLIKELY(current_cpu->trace_result_p))
1645 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1646 current_cpu->h_gr_set (((UINT) 14), opval);
1652 tmp_nvalue = ANDSI (255, current_cpu->GETMEMQI (pc, ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12))));
1654 HI opval = tmp_nvalue;
1655 if (UNLIKELY(current_cpu->trace_result_p))
1656 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rdm) << ']' << ":=0x" << hex << opval << dec << " ";
1657 current_cpu->h_gr_set (FLD (f_Rdm), opval);
1660 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1661 if (UNLIKELY(current_cpu->trace_result_p))
1662 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1663 current_cpu->h_gr_set (((UINT) 14), opval);
1669 current_cpu->done_insn (npc, status);
1674 // ********** movfgriigr: movf$ws2 ($Rb,$Rs,$imm12),$Rdm
1677 xstormy16_sem_movfgriigr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1679 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1680 sem_status status = SEM_STATUS_NORMAL;
1681 xstormy16_scache* abuf = sem;
1682 PCADDR pc = abuf->addr;
1683 PCADDR npc = pc + 4;
1688 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1689 if (UNLIKELY(current_cpu->trace_result_p))
1690 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), 0xfffffffe) << dec << ']' << ":=0x" << hex << opval << dec << " ";
1691 current_cpu->SETMEMHI (pc, ANDSI (ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), 0xfffffffe), opval);
1695 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1696 if (UNLIKELY(current_cpu->trace_result_p))
1697 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
1698 current_cpu->SETMEMQI (pc, ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), opval);
1703 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
1705 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1706 if (UNLIKELY(current_cpu->trace_result_p))
1707 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1708 current_cpu->h_gr_set (((UINT) 14), opval);
1713 current_cpu->done_insn (npc, status);
1718 // ********** movfgriipostincgr: movf$ws2 ($Rb,$Rs++,$imm12),$Rdm
1721 xstormy16_sem_movfgriipostincgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1723 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1724 sem_status status = SEM_STATUS_NORMAL;
1725 xstormy16_scache* abuf = sem;
1726 PCADDR pc = abuf->addr;
1727 PCADDR npc = pc + 4;
1732 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1733 if (UNLIKELY(current_cpu->trace_result_p))
1734 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), 0xfffffffe) << dec << ']' << ":=0x" << hex << opval << dec << " ";
1735 current_cpu->SETMEMHI (pc, ANDSI (ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), 0xfffffffe), opval);
1739 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1740 if (UNLIKELY(current_cpu->trace_result_p))
1741 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
1742 current_cpu->SETMEMQI (pc, ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), opval);
1747 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
1749 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1750 if (UNLIKELY(current_cpu->trace_result_p))
1751 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1752 current_cpu->h_gr_set (((UINT) 14), opval);
1756 SI opval = ADDSI (current_cpu->h_gr_get (FLD (f_Rs)), ADDSI (FLD (f_op2m), 1));
1757 if (UNLIKELY(current_cpu->trace_result_p))
1758 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
1759 current_cpu->h_gr_set (FLD (f_Rs), opval);
1763 current_cpu->done_insn (npc, status);
1768 // ********** movfgriipredecgr: movf$ws2 ($Rb,--$Rs,$imm12),$Rdm
1771 xstormy16_sem_movfgriipredecgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1773 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
1774 sem_status status = SEM_STATUS_NORMAL;
1775 xstormy16_scache* abuf = sem;
1776 PCADDR pc = abuf->addr;
1777 PCADDR npc = pc + 4;
1781 SI opval = SUBSI (current_cpu->h_gr_get (FLD (f_Rs)), 1);
1782 if (UNLIKELY(current_cpu->trace_result_p))
1783 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
1784 current_cpu->h_gr_set (FLD (f_Rs), opval);
1788 tmp_nvalue = current_cpu->h_gr_get (FLD (f_Rdm));
1790 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rdm), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (FLD (f_op2m), 8)), 0), 6)))));
1791 if (UNLIKELY(current_cpu->trace_result_p))
1792 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1793 current_cpu->h_gr_set (((UINT) 14), opval);
1798 HI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1799 if (UNLIKELY(current_cpu->trace_result_p))
1800 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), 0xfffffffe) << dec << ']' << ":=0x" << hex << opval << dec << " ";
1801 current_cpu->SETMEMHI (pc, ANDSI (ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), 0xfffffffe), opval);
1805 QI opval = current_cpu->h_gr_get (FLD (f_Rdm));
1806 if (UNLIKELY(current_cpu->trace_result_p))
1807 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
1808 current_cpu->SETMEMQI (pc, ADDSI (JOINHISI (current_cpu->h_Rb_get (FLD (f_Rb)), current_cpu->h_gr_get (FLD (f_Rs))), FLD (f_imm12)), opval);
1813 current_cpu->done_insn (npc, status);
1818 // ********** maskgrgr: mask $Rd,$Rs
1821 xstormy16_sem_maskgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1823 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
1824 sem_status status = SEM_STATUS_NORMAL;
1825 xstormy16_scache* abuf = sem;
1826 PCADDR pc = abuf->addr;
1827 PCADDR npc = pc + 2;
1831 tmp_nvalue = ORHI (ANDHI (current_cpu->h_gr_get (FLD (f_Rd)), INVHI (current_cpu->h_gr_get (FLD (f_Rs)))), ANDHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), current_cpu->h_gr_get (FLD (f_Rs))));
1833 HI opval = tmp_nvalue;
1834 if (UNLIKELY(current_cpu->trace_result_p))
1835 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
1836 current_cpu->h_gr_set (FLD (f_Rd), opval);
1839 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
1840 if (UNLIKELY(current_cpu->trace_result_p))
1841 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1842 current_cpu->h_gr_set (((UINT) 14), opval);
1846 current_cpu->done_insn (npc, status);
1851 // ********** maskgrimm16: mask $Rd,#$imm16
1854 xstormy16_sem_maskgrimm16 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1856 #define FLD(f) abuf->fields.sfmt_movwgrimm16.f
1857 sem_status status = SEM_STATUS_NORMAL;
1858 xstormy16_scache* abuf = sem;
1859 PCADDR pc = abuf->addr;
1860 PCADDR npc = pc + 4;
1864 tmp_nvalue = ORSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), INVSI (FLD (f_imm16))), ANDHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm16)));
1866 HI opval = tmp_nvalue;
1867 if (UNLIKELY(current_cpu->trace_result_p))
1868 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
1869 current_cpu->h_gr_set (FLD (f_Rd), opval);
1872 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
1873 if (UNLIKELY(current_cpu->trace_result_p))
1874 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1875 current_cpu->h_gr_set (((UINT) 14), opval);
1879 current_cpu->done_insn (npc, status);
1884 // ********** pushgr: push $Rd
1887 xstormy16_sem_pushgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1889 #define FLD(f) abuf->fields.sfmt_jmp.f
1890 sem_status status = SEM_STATUS_NORMAL;
1891 xstormy16_scache* abuf = sem;
1892 PCADDR pc = abuf->addr;
1893 PCADDR npc = pc + 2;
1897 HI opval = current_cpu->h_gr_get (FLD (f_Rd));
1898 if (UNLIKELY(current_cpu->trace_result_p))
1899 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) current_cpu->h_gr_get (((UINT) 15)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
1900 current_cpu->SETMEMHI (pc, current_cpu->h_gr_get (((UINT) 15)), opval);
1903 SI opval = ADDSI (current_cpu->h_gr_get (((UINT) 15)), 2);
1904 if (UNLIKELY(current_cpu->trace_result_p))
1905 current_cpu->trace_stream << "gr" << '[' << ((UINT) 15) << ']' << ":=0x" << hex << opval << dec << " ";
1906 current_cpu->h_gr_set (((UINT) 15), opval);
1910 current_cpu->done_insn (npc, status);
1915 // ********** popgr: pop $Rd
1918 xstormy16_sem_popgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1920 #define FLD(f) abuf->fields.sfmt_jmp.f
1921 sem_status status = SEM_STATUS_NORMAL;
1922 xstormy16_scache* abuf = sem;
1923 PCADDR pc = abuf->addr;
1924 PCADDR npc = pc + 2;
1928 SI opval = ADDSI (current_cpu->h_gr_get (((UINT) 15)), -2);
1929 if (UNLIKELY(current_cpu->trace_result_p))
1930 current_cpu->trace_stream << "gr" << '[' << ((UINT) 15) << ']' << ":=0x" << hex << opval << dec << " ";
1931 current_cpu->h_gr_set (((UINT) 15), opval);
1934 SI opval = current_cpu->GETMEMHI (pc, current_cpu->h_gr_get (((UINT) 15)));
1935 if (UNLIKELY(current_cpu->trace_result_p))
1936 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
1937 current_cpu->h_gr_set (FLD (f_Rd), opval);
1941 current_cpu->done_insn (npc, status);
1946 // ********** swpn: swpn $Rd
1949 xstormy16_sem_swpn (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1951 #define FLD(f) abuf->fields.sfmt_jmp.f
1952 sem_status status = SEM_STATUS_NORMAL;
1953 xstormy16_scache* abuf = sem;
1954 PCADDR pc = abuf->addr;
1955 PCADDR npc = pc + 2;
1959 tmp_nvalue = ORSI (ORSI (ANDSI (SLLSI (current_cpu->h_gr_get (FLD (f_Rd)), 4), 240), ANDSI (SRLSI (current_cpu->h_gr_get (FLD (f_Rd)), 4), 15)), ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 65280));
1961 HI opval = tmp_nvalue;
1962 if (UNLIKELY(current_cpu->trace_result_p))
1963 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
1964 current_cpu->h_gr_set (FLD (f_Rd), opval);
1967 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (0, 8)), 0), 6)))));
1968 if (UNLIKELY(current_cpu->trace_result_p))
1969 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
1970 current_cpu->h_gr_set (((UINT) 14), opval);
1974 current_cpu->done_insn (npc, status);
1979 // ********** swpb: swpb $Rd
1982 xstormy16_sem_swpb (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
1984 #define FLD(f) abuf->fields.sfmt_jmp.f
1985 sem_status status = SEM_STATUS_NORMAL;
1986 xstormy16_scache* abuf = sem;
1987 PCADDR pc = abuf->addr;
1988 PCADDR npc = pc + 2;
1992 tmp_nvalue = ORSI (SLLSI (current_cpu->h_gr_get (FLD (f_Rd)), 8), SRLSI (current_cpu->h_gr_get (FLD (f_Rd)), 8));
1994 HI opval = tmp_nvalue;
1995 if (UNLIKELY(current_cpu->trace_result_p))
1996 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
1997 current_cpu->h_gr_set (FLD (f_Rd), opval);
2000 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2001 if (UNLIKELY(current_cpu->trace_result_p))
2002 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2003 current_cpu->h_gr_set (((UINT) 14), opval);
2007 current_cpu->done_insn (npc, status);
2012 // ********** swpw: swpw $Rd,$Rs
2015 xstormy16_sem_swpw (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2017 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
2018 sem_status status = SEM_STATUS_NORMAL;
2019 xstormy16_scache* abuf = sem;
2020 PCADDR pc = abuf->addr;
2021 PCADDR npc = pc + 2;
2025 tmp_foo = current_cpu->h_gr_get (FLD (f_Rs));
2027 SI opval = current_cpu->h_gr_get (FLD (f_Rd));
2028 if (UNLIKELY(current_cpu->trace_result_p))
2029 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rs) << ']' << ":=0x" << hex << opval << dec << " ";
2030 current_cpu->h_gr_set (FLD (f_Rs), opval);
2034 tmp_nvalue = tmp_foo;
2036 HI opval = tmp_nvalue;
2037 if (UNLIKELY(current_cpu->trace_result_p))
2038 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2039 current_cpu->h_gr_set (FLD (f_Rd), opval);
2042 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2043 if (UNLIKELY(current_cpu->trace_result_p))
2044 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2045 current_cpu->h_gr_set (((UINT) 14), opval);
2050 current_cpu->done_insn (npc, status);
2055 // ********** andgrgr: and $Rd,$Rs
2058 xstormy16_sem_andgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2060 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
2061 sem_status status = SEM_STATUS_NORMAL;
2062 xstormy16_scache* abuf = sem;
2063 PCADDR pc = abuf->addr;
2064 PCADDR npc = pc + 2;
2068 tmp_nvalue = ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)));
2070 HI opval = tmp_nvalue;
2071 if (UNLIKELY(current_cpu->trace_result_p))
2072 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2073 current_cpu->h_gr_set (FLD (f_Rd), opval);
2076 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2077 if (UNLIKELY(current_cpu->trace_result_p))
2078 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2079 current_cpu->h_gr_set (((UINT) 14), opval);
2083 current_cpu->done_insn (npc, status);
2088 // ********** andimm8: and Rx,#$imm8
2091 xstormy16_sem_andimm8 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2093 #define FLD(f) abuf->fields.sfmt_bccgrimm8.f
2094 sem_status status = SEM_STATUS_NORMAL;
2095 xstormy16_scache* abuf = sem;
2096 PCADDR pc = abuf->addr;
2097 PCADDR npc = pc + 2;
2101 tmp_nvalue = ANDHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8));
2103 HI opval = tmp_nvalue;
2104 if (UNLIKELY(current_cpu->trace_result_p))
2105 current_cpu->trace_stream << "gr" << '[' << current_cpu->h_Rpsw_get () << ']' << ":=0x" << hex << opval << dec << " ";
2106 current_cpu->h_gr_set (current_cpu->h_Rpsw_get (), opval);
2109 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (current_cpu->h_Rpsw_get (), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2110 if (UNLIKELY(current_cpu->trace_result_p))
2111 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2112 current_cpu->h_gr_set (((UINT) 14), opval);
2116 current_cpu->done_insn (npc, status);
2121 // ********** andgrimm16: and $Rd,#$imm16
2124 xstormy16_sem_andgrimm16 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2126 #define FLD(f) abuf->fields.sfmt_movwgrimm16.f
2127 sem_status status = SEM_STATUS_NORMAL;
2128 xstormy16_scache* abuf = sem;
2129 PCADDR pc = abuf->addr;
2130 PCADDR npc = pc + 4;
2134 tmp_nvalue = ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16));
2136 HI opval = tmp_nvalue;
2137 if (UNLIKELY(current_cpu->trace_result_p))
2138 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2139 current_cpu->h_gr_set (FLD (f_Rd), opval);
2142 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2143 if (UNLIKELY(current_cpu->trace_result_p))
2144 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2145 current_cpu->h_gr_set (((UINT) 14), opval);
2149 current_cpu->done_insn (npc, status);
2154 // ********** orgrgr: or $Rd,$Rs
2157 xstormy16_sem_orgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2159 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
2160 sem_status status = SEM_STATUS_NORMAL;
2161 xstormy16_scache* abuf = sem;
2162 PCADDR pc = abuf->addr;
2163 PCADDR npc = pc + 2;
2167 tmp_nvalue = ORSI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)));
2169 HI opval = tmp_nvalue;
2170 if (UNLIKELY(current_cpu->trace_result_p))
2171 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2172 current_cpu->h_gr_set (FLD (f_Rd), opval);
2175 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2176 if (UNLIKELY(current_cpu->trace_result_p))
2177 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2178 current_cpu->h_gr_set (((UINT) 14), opval);
2182 current_cpu->done_insn (npc, status);
2187 // ********** orimm8: or Rx,#$imm8
2190 xstormy16_sem_orimm8 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2192 #define FLD(f) abuf->fields.sfmt_bccgrimm8.f
2193 sem_status status = SEM_STATUS_NORMAL;
2194 xstormy16_scache* abuf = sem;
2195 PCADDR pc = abuf->addr;
2196 PCADDR npc = pc + 2;
2200 tmp_nvalue = ORHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8));
2202 HI opval = tmp_nvalue;
2203 if (UNLIKELY(current_cpu->trace_result_p))
2204 current_cpu->trace_stream << "gr" << '[' << current_cpu->h_Rpsw_get () << ']' << ":=0x" << hex << opval << dec << " ";
2205 current_cpu->h_gr_set (current_cpu->h_Rpsw_get (), opval);
2208 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (current_cpu->h_Rpsw_get (), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2209 if (UNLIKELY(current_cpu->trace_result_p))
2210 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2211 current_cpu->h_gr_set (((UINT) 14), opval);
2215 current_cpu->done_insn (npc, status);
2220 // ********** orgrimm16: or $Rd,#$imm16
2223 xstormy16_sem_orgrimm16 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2225 #define FLD(f) abuf->fields.sfmt_movwgrimm16.f
2226 sem_status status = SEM_STATUS_NORMAL;
2227 xstormy16_scache* abuf = sem;
2228 PCADDR pc = abuf->addr;
2229 PCADDR npc = pc + 4;
2233 tmp_nvalue = ORSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16));
2235 HI opval = tmp_nvalue;
2236 if (UNLIKELY(current_cpu->trace_result_p))
2237 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2238 current_cpu->h_gr_set (FLD (f_Rd), opval);
2241 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2242 if (UNLIKELY(current_cpu->trace_result_p))
2243 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2244 current_cpu->h_gr_set (((UINT) 14), opval);
2248 current_cpu->done_insn (npc, status);
2253 // ********** xorgrgr: xor $Rd,$Rs
2256 xstormy16_sem_xorgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2258 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
2259 sem_status status = SEM_STATUS_NORMAL;
2260 xstormy16_scache* abuf = sem;
2261 PCADDR pc = abuf->addr;
2262 PCADDR npc = pc + 2;
2266 tmp_nvalue = XORSI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)));
2268 HI opval = tmp_nvalue;
2269 if (UNLIKELY(current_cpu->trace_result_p))
2270 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2271 current_cpu->h_gr_set (FLD (f_Rd), opval);
2274 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2275 if (UNLIKELY(current_cpu->trace_result_p))
2276 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2277 current_cpu->h_gr_set (((UINT) 14), opval);
2281 current_cpu->done_insn (npc, status);
2286 // ********** xorimm8: xor Rx,#$imm8
2289 xstormy16_sem_xorimm8 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2291 #define FLD(f) abuf->fields.sfmt_bccgrimm8.f
2292 sem_status status = SEM_STATUS_NORMAL;
2293 xstormy16_scache* abuf = sem;
2294 PCADDR pc = abuf->addr;
2295 PCADDR npc = pc + 2;
2299 tmp_nvalue = XORHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8));
2301 HI opval = tmp_nvalue;
2302 if (UNLIKELY(current_cpu->trace_result_p))
2303 current_cpu->trace_stream << "gr" << '[' << current_cpu->h_Rpsw_get () << ']' << ":=0x" << hex << opval << dec << " ";
2304 current_cpu->h_gr_set (current_cpu->h_Rpsw_get (), opval);
2307 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (current_cpu->h_Rpsw_get (), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2308 if (UNLIKELY(current_cpu->trace_result_p))
2309 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2310 current_cpu->h_gr_set (((UINT) 14), opval);
2314 current_cpu->done_insn (npc, status);
2319 // ********** xorgrimm16: xor $Rd,#$imm16
2322 xstormy16_sem_xorgrimm16 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2324 #define FLD(f) abuf->fields.sfmt_movwgrimm16.f
2325 sem_status status = SEM_STATUS_NORMAL;
2326 xstormy16_scache* abuf = sem;
2327 PCADDR pc = abuf->addr;
2328 PCADDR npc = pc + 4;
2332 tmp_nvalue = XORSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16));
2334 HI opval = tmp_nvalue;
2335 if (UNLIKELY(current_cpu->trace_result_p))
2336 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2337 current_cpu->h_gr_set (FLD (f_Rd), opval);
2340 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2341 if (UNLIKELY(current_cpu->trace_result_p))
2342 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2343 current_cpu->h_gr_set (((UINT) 14), opval);
2347 current_cpu->done_insn (npc, status);
2352 // ********** notgr: not $Rd
2355 xstormy16_sem_notgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2357 #define FLD(f) abuf->fields.sfmt_jmp.f
2358 sem_status status = SEM_STATUS_NORMAL;
2359 xstormy16_scache* abuf = sem;
2360 PCADDR pc = abuf->addr;
2361 PCADDR npc = pc + 2;
2365 tmp_nvalue = INVSI (current_cpu->h_gr_get (FLD (f_Rd)));
2367 HI opval = tmp_nvalue;
2368 if (UNLIKELY(current_cpu->trace_result_p))
2369 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2370 current_cpu->h_gr_set (FLD (f_Rd), opval);
2373 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2374 if (UNLIKELY(current_cpu->trace_result_p))
2375 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2376 current_cpu->h_gr_set (((UINT) 14), opval);
2380 current_cpu->done_insn (npc, status);
2385 // ********** addgrgr: add $Rd,$Rs
2388 xstormy16_sem_addgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2390 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
2391 sem_status status = SEM_STATUS_NORMAL;
2392 xstormy16_scache* abuf = sem;
2393 PCADDR pc = abuf->addr;
2394 PCADDR npc = pc + 2;
2399 tmp_value = ADDCSI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), 0);
2400 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (ADDOFHI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), 0), 4), SLLHI (ADDCFHI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), 0), 2)), ORHI (ANDHI (SRLHI (ADDCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15), 0), 1), 8), SLLSI (FLD (f_Rd), 12))));
2402 HI opval = tmp_value;
2403 if (UNLIKELY(current_cpu->trace_result_p))
2404 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2405 current_cpu->h_gr_set (FLD (f_Rd), opval);
2408 SI opval = tmp_newpsw;
2409 if (UNLIKELY(current_cpu->trace_result_p))
2410 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2411 current_cpu->h_gr_set (((UINT) 14), opval);
2415 current_cpu->done_insn (npc, status);
2420 // ********** addgrimm4: add $Rd,#$imm4
2423 xstormy16_sem_addgrimm4 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2425 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
2426 sem_status status = SEM_STATUS_NORMAL;
2427 xstormy16_scache* abuf = sem;
2428 PCADDR pc = abuf->addr;
2429 PCADDR npc = pc + 2;
2434 tmp_value = ADDCSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), 0);
2435 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (ADDOFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), 0), 4), SLLHI (ADDCFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), 0), 2)), ORHI (ANDHI (SRLHI (ADDCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (FLD (f_imm4), 15), 0), 1), 8), SLLSI (FLD (f_Rd), 12))));
2437 HI opval = tmp_value;
2438 if (UNLIKELY(current_cpu->trace_result_p))
2439 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2440 current_cpu->h_gr_set (FLD (f_Rd), opval);
2443 SI opval = tmp_newpsw;
2444 if (UNLIKELY(current_cpu->trace_result_p))
2445 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2446 current_cpu->h_gr_set (((UINT) 14), opval);
2450 current_cpu->done_insn (npc, status);
2455 // ********** addimm8: add Rx,#$imm8
2458 xstormy16_sem_addimm8 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2460 #define FLD(f) abuf->fields.sfmt_bccgrimm8.f
2461 sem_status status = SEM_STATUS_NORMAL;
2462 xstormy16_scache* abuf = sem;
2463 PCADDR pc = abuf->addr;
2464 PCADDR npc = pc + 2;
2469 tmp_value = ADDCHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), 0);
2470 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (ADDOFHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), 0), 4), SLLHI (ADDCFHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), 0), 2)), ORHI (ANDHI (SRLHI (ADDCHI (ANDHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), 15), ANDSI (FLD (f_imm8), 15), 0), 1), 8), SLLSI (current_cpu->h_Rpsw_get (), 12))));
2472 HI opval = tmp_value;
2473 if (UNLIKELY(current_cpu->trace_result_p))
2474 current_cpu->trace_stream << "gr" << '[' << current_cpu->h_Rpsw_get () << ']' << ":=0x" << hex << opval << dec << " ";
2475 current_cpu->h_gr_set (current_cpu->h_Rpsw_get (), opval);
2478 SI opval = tmp_newpsw;
2479 if (UNLIKELY(current_cpu->trace_result_p))
2480 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2481 current_cpu->h_gr_set (((UINT) 14), opval);
2485 current_cpu->done_insn (npc, status);
2490 // ********** addgrimm16: add $Rd,#$imm16
2493 xstormy16_sem_addgrimm16 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2495 #define FLD(f) abuf->fields.sfmt_movwgrimm16.f
2496 sem_status status = SEM_STATUS_NORMAL;
2497 xstormy16_scache* abuf = sem;
2498 PCADDR pc = abuf->addr;
2499 PCADDR npc = pc + 4;
2504 tmp_value = ADDCSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), 0);
2505 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (ADDOFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), 0), 4), SLLHI (ADDCFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), 0), 2)), ORHI (ANDHI (SRLHI (ADDCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (FLD (f_imm16), 15), 0), 1), 8), SLLSI (FLD (f_Rd), 12))));
2507 HI opval = tmp_value;
2508 if (UNLIKELY(current_cpu->trace_result_p))
2509 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2510 current_cpu->h_gr_set (FLD (f_Rd), opval);
2513 SI opval = tmp_newpsw;
2514 if (UNLIKELY(current_cpu->trace_result_p))
2515 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2516 current_cpu->h_gr_set (((UINT) 14), opval);
2520 current_cpu->done_insn (npc, status);
2525 // ********** adcgrgr: adc $Rd,$Rs
2528 xstormy16_sem_adcgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2530 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
2531 sem_status status = SEM_STATUS_NORMAL;
2532 xstormy16_scache* abuf = sem;
2533 PCADDR pc = abuf->addr;
2534 PCADDR npc = pc + 2;
2539 tmp_value = ADDCSI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), current_cpu->h_cy_get ());
2540 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (ADDOFHI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), current_cpu->h_cy_get ()), 4), SLLHI (ADDCFHI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), current_cpu->h_cy_get ()), 2)), ORHI (ANDHI (SRLHI (ADDCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15), current_cpu->h_cy_get ()), 1), 8), SLLSI (FLD (f_Rd), 12))));
2542 HI opval = tmp_value;
2543 if (UNLIKELY(current_cpu->trace_result_p))
2544 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2545 current_cpu->h_gr_set (FLD (f_Rd), opval);
2548 SI opval = tmp_newpsw;
2549 if (UNLIKELY(current_cpu->trace_result_p))
2550 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2551 current_cpu->h_gr_set (((UINT) 14), opval);
2555 current_cpu->done_insn (npc, status);
2560 // ********** adcgrimm4: adc $Rd,#$imm4
2563 xstormy16_sem_adcgrimm4 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2565 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
2566 sem_status status = SEM_STATUS_NORMAL;
2567 xstormy16_scache* abuf = sem;
2568 PCADDR pc = abuf->addr;
2569 PCADDR npc = pc + 2;
2574 tmp_value = ADDCSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), current_cpu->h_cy_get ());
2575 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (ADDOFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), current_cpu->h_cy_get ()), 4), SLLHI (ADDCFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), current_cpu->h_cy_get ()), 2)), ORHI (ANDHI (SRLHI (ADDCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (FLD (f_imm4), 15), current_cpu->h_cy_get ()), 1), 8), SLLSI (FLD (f_Rd), 12))));
2577 HI opval = tmp_value;
2578 if (UNLIKELY(current_cpu->trace_result_p))
2579 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2580 current_cpu->h_gr_set (FLD (f_Rd), opval);
2583 SI opval = tmp_newpsw;
2584 if (UNLIKELY(current_cpu->trace_result_p))
2585 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2586 current_cpu->h_gr_set (((UINT) 14), opval);
2590 current_cpu->done_insn (npc, status);
2595 // ********** adcimm8: adc Rx,#$imm8
2598 xstormy16_sem_adcimm8 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2600 #define FLD(f) abuf->fields.sfmt_bccgrimm8.f
2601 sem_status status = SEM_STATUS_NORMAL;
2602 xstormy16_scache* abuf = sem;
2603 PCADDR pc = abuf->addr;
2604 PCADDR npc = pc + 2;
2609 tmp_value = ADDCHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), current_cpu->h_cy_get ());
2610 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (ADDOFHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), current_cpu->h_cy_get ()), 4), SLLHI (ADDCFHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), current_cpu->h_cy_get ()), 2)), ORHI (ANDHI (SRLHI (ADDCHI (ANDHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), 15), ANDSI (FLD (f_imm8), 15), current_cpu->h_cy_get ()), 1), 8), SLLSI (current_cpu->h_Rpsw_get (), 12))));
2612 HI opval = tmp_value;
2613 if (UNLIKELY(current_cpu->trace_result_p))
2614 current_cpu->trace_stream << "gr" << '[' << current_cpu->h_Rpsw_get () << ']' << ":=0x" << hex << opval << dec << " ";
2615 current_cpu->h_gr_set (current_cpu->h_Rpsw_get (), opval);
2618 SI opval = tmp_newpsw;
2619 if (UNLIKELY(current_cpu->trace_result_p))
2620 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2621 current_cpu->h_gr_set (((UINT) 14), opval);
2625 current_cpu->done_insn (npc, status);
2630 // ********** adcgrimm16: adc $Rd,#$imm16
2633 xstormy16_sem_adcgrimm16 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2635 #define FLD(f) abuf->fields.sfmt_movwgrimm16.f
2636 sem_status status = SEM_STATUS_NORMAL;
2637 xstormy16_scache* abuf = sem;
2638 PCADDR pc = abuf->addr;
2639 PCADDR npc = pc + 4;
2644 tmp_value = ADDCSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), current_cpu->h_cy_get ());
2645 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (ADDOFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), current_cpu->h_cy_get ()), 4), SLLHI (ADDCFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), current_cpu->h_cy_get ()), 2)), ORHI (ANDHI (SRLHI (ADDCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (FLD (f_imm16), 15), current_cpu->h_cy_get ()), 1), 8), SLLSI (FLD (f_Rd), 12))));
2647 HI opval = tmp_value;
2648 if (UNLIKELY(current_cpu->trace_result_p))
2649 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2650 current_cpu->h_gr_set (FLD (f_Rd), opval);
2653 SI opval = tmp_newpsw;
2654 if (UNLIKELY(current_cpu->trace_result_p))
2655 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2656 current_cpu->h_gr_set (((UINT) 14), opval);
2660 current_cpu->done_insn (npc, status);
2665 // ********** subgrgr: sub $Rd,$Rs
2668 xstormy16_sem_subgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2670 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
2671 sem_status status = SEM_STATUS_NORMAL;
2672 xstormy16_scache* abuf = sem;
2673 PCADDR pc = abuf->addr;
2674 PCADDR npc = pc + 2;
2679 tmp_value = SUBCSI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), 0);
2680 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (SUBOFHI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), 0), 4), SLLHI (SUBCFHI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), 0), 2)), ORHI (ANDHI (SRLHI (SUBCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15), 0), 1), 8), SLLSI (FLD (f_Rd), 12))));
2682 HI opval = tmp_value;
2683 if (UNLIKELY(current_cpu->trace_result_p))
2684 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2685 current_cpu->h_gr_set (FLD (f_Rd), opval);
2688 SI opval = tmp_newpsw;
2689 if (UNLIKELY(current_cpu->trace_result_p))
2690 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2691 current_cpu->h_gr_set (((UINT) 14), opval);
2695 current_cpu->done_insn (npc, status);
2700 // ********** subgrimm4: sub $Rd,#$imm4
2703 xstormy16_sem_subgrimm4 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2705 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
2706 sem_status status = SEM_STATUS_NORMAL;
2707 xstormy16_scache* abuf = sem;
2708 PCADDR pc = abuf->addr;
2709 PCADDR npc = pc + 2;
2714 tmp_value = SUBCSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), 0);
2715 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (SUBOFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), 0), 4), SLLHI (SUBCFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), 0), 2)), ORHI (ANDHI (SRLHI (SUBCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (FLD (f_imm4), 15), 0), 1), 8), SLLSI (FLD (f_Rd), 12))));
2717 HI opval = tmp_value;
2718 if (UNLIKELY(current_cpu->trace_result_p))
2719 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2720 current_cpu->h_gr_set (FLD (f_Rd), opval);
2723 SI opval = tmp_newpsw;
2724 if (UNLIKELY(current_cpu->trace_result_p))
2725 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2726 current_cpu->h_gr_set (((UINT) 14), opval);
2730 current_cpu->done_insn (npc, status);
2735 // ********** subimm8: sub Rx,#$imm8
2738 xstormy16_sem_subimm8 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2740 #define FLD(f) abuf->fields.sfmt_bccgrimm8.f
2741 sem_status status = SEM_STATUS_NORMAL;
2742 xstormy16_scache* abuf = sem;
2743 PCADDR pc = abuf->addr;
2744 PCADDR npc = pc + 2;
2749 tmp_value = SUBCHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), 0);
2750 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (SUBOFHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), 0), 4), SLLHI (SUBCFHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), 0), 2)), ORHI (ANDHI (SRLHI (SUBCHI (ANDHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), 15), ANDSI (FLD (f_imm8), 15), 0), 1), 8), SLLSI (current_cpu->h_Rpsw_get (), 12))));
2752 HI opval = tmp_value;
2753 if (UNLIKELY(current_cpu->trace_result_p))
2754 current_cpu->trace_stream << "gr" << '[' << current_cpu->h_Rpsw_get () << ']' << ":=0x" << hex << opval << dec << " ";
2755 current_cpu->h_gr_set (current_cpu->h_Rpsw_get (), opval);
2758 SI opval = tmp_newpsw;
2759 if (UNLIKELY(current_cpu->trace_result_p))
2760 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2761 current_cpu->h_gr_set (((UINT) 14), opval);
2765 current_cpu->done_insn (npc, status);
2770 // ********** subgrimm16: sub $Rd,#$imm16
2773 xstormy16_sem_subgrimm16 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2775 #define FLD(f) abuf->fields.sfmt_movwgrimm16.f
2776 sem_status status = SEM_STATUS_NORMAL;
2777 xstormy16_scache* abuf = sem;
2778 PCADDR pc = abuf->addr;
2779 PCADDR npc = pc + 4;
2784 tmp_value = SUBCSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), 0);
2785 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (SUBOFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), 0), 4), SLLHI (SUBCFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), 0), 2)), ORHI (ANDHI (SRLHI (SUBCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (FLD (f_imm16), 15), 0), 1), 8), SLLSI (FLD (f_Rd), 12))));
2787 HI opval = tmp_value;
2788 if (UNLIKELY(current_cpu->trace_result_p))
2789 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2790 current_cpu->h_gr_set (FLD (f_Rd), opval);
2793 SI opval = tmp_newpsw;
2794 if (UNLIKELY(current_cpu->trace_result_p))
2795 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2796 current_cpu->h_gr_set (((UINT) 14), opval);
2800 current_cpu->done_insn (npc, status);
2805 // ********** sbcgrgr: sbc $Rd,$Rs
2808 xstormy16_sem_sbcgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2810 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
2811 sem_status status = SEM_STATUS_NORMAL;
2812 xstormy16_scache* abuf = sem;
2813 PCADDR pc = abuf->addr;
2814 PCADDR npc = pc + 2;
2819 tmp_value = SUBCSI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), current_cpu->h_cy_get ());
2820 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (SUBOFHI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), current_cpu->h_cy_get ()), 4), SLLHI (SUBCFHI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), current_cpu->h_cy_get ()), 2)), ORHI (ANDHI (SRLHI (SUBCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15), current_cpu->h_cy_get ()), 1), 8), SLLSI (FLD (f_Rd), 12))));
2822 HI opval = tmp_value;
2823 if (UNLIKELY(current_cpu->trace_result_p))
2824 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2825 current_cpu->h_gr_set (FLD (f_Rd), opval);
2828 SI opval = tmp_newpsw;
2829 if (UNLIKELY(current_cpu->trace_result_p))
2830 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2831 current_cpu->h_gr_set (((UINT) 14), opval);
2835 current_cpu->done_insn (npc, status);
2840 // ********** sbcgrimm4: sbc $Rd,#$imm4
2843 xstormy16_sem_sbcgrimm4 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2845 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
2846 sem_status status = SEM_STATUS_NORMAL;
2847 xstormy16_scache* abuf = sem;
2848 PCADDR pc = abuf->addr;
2849 PCADDR npc = pc + 2;
2854 tmp_value = SUBCSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), current_cpu->h_cy_get ());
2855 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (SUBOFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), current_cpu->h_cy_get ()), 4), SLLHI (SUBCFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4), current_cpu->h_cy_get ()), 2)), ORHI (ANDHI (SRLHI (SUBCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (FLD (f_imm4), 15), current_cpu->h_cy_get ()), 1), 8), SLLSI (FLD (f_Rd), 12))));
2857 HI opval = tmp_value;
2858 if (UNLIKELY(current_cpu->trace_result_p))
2859 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2860 current_cpu->h_gr_set (FLD (f_Rd), opval);
2863 SI opval = tmp_newpsw;
2864 if (UNLIKELY(current_cpu->trace_result_p))
2865 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2866 current_cpu->h_gr_set (((UINT) 14), opval);
2870 current_cpu->done_insn (npc, status);
2875 // ********** sbcgrimm8: sbc Rx,#$imm8
2878 xstormy16_sem_sbcgrimm8 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2880 #define FLD(f) abuf->fields.sfmt_bccgrimm8.f
2881 sem_status status = SEM_STATUS_NORMAL;
2882 xstormy16_scache* abuf = sem;
2883 PCADDR pc = abuf->addr;
2884 PCADDR npc = pc + 2;
2889 tmp_value = SUBCHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), current_cpu->h_cy_get ());
2890 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (SUBOFHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), current_cpu->h_cy_get ()), 4), SLLHI (SUBCFHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm8), current_cpu->h_cy_get ()), 2)), ORHI (ANDHI (SRLHI (SUBCHI (ANDHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), 15), ANDSI (FLD (f_imm8), 15), current_cpu->h_cy_get ()), 1), 8), SLLSI (current_cpu->h_Rpsw_get (), 12))));
2892 HI opval = tmp_value;
2893 if (UNLIKELY(current_cpu->trace_result_p))
2894 current_cpu->trace_stream << "gr" << '[' << current_cpu->h_Rpsw_get () << ']' << ":=0x" << hex << opval << dec << " ";
2895 current_cpu->h_gr_set (current_cpu->h_Rpsw_get (), opval);
2898 SI opval = tmp_newpsw;
2899 if (UNLIKELY(current_cpu->trace_result_p))
2900 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2901 current_cpu->h_gr_set (((UINT) 14), opval);
2905 current_cpu->done_insn (npc, status);
2910 // ********** sbcgrimm16: sbc $Rd,#$imm16
2913 xstormy16_sem_sbcgrimm16 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2915 #define FLD(f) abuf->fields.sfmt_movwgrimm16.f
2916 sem_status status = SEM_STATUS_NORMAL;
2917 xstormy16_scache* abuf = sem;
2918 PCADDR pc = abuf->addr;
2919 PCADDR npc = pc + 4;
2924 tmp_value = SUBCSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), current_cpu->h_cy_get ());
2925 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (SUBOFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), current_cpu->h_cy_get ()), 4), SLLHI (SUBCFHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm16), current_cpu->h_cy_get ()), 2)), ORHI (ANDHI (SRLHI (SUBCHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (FLD (f_imm16), 15), current_cpu->h_cy_get ()), 1), 8), SLLSI (FLD (f_Rd), 12))));
2927 HI opval = tmp_value;
2928 if (UNLIKELY(current_cpu->trace_result_p))
2929 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2930 current_cpu->h_gr_set (FLD (f_Rd), opval);
2933 SI opval = tmp_newpsw;
2934 if (UNLIKELY(current_cpu->trace_result_p))
2935 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2936 current_cpu->h_gr_set (((UINT) 14), opval);
2940 current_cpu->done_insn (npc, status);
2945 // ********** incgrimm2: inc $Rd,#$imm2
2948 xstormy16_sem_incgrimm2 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2950 #define FLD(f) abuf->fields.sfmt_incgrimm2.f
2951 sem_status status = SEM_STATUS_NORMAL;
2952 xstormy16_scache* abuf = sem;
2953 PCADDR pc = abuf->addr;
2954 PCADDR npc = pc + 2;
2958 tmp_nvalue = ADDSI (current_cpu->h_gr_get (FLD (f_Rd)), ADDSI (FLD (f_imm2), 1));
2960 HI opval = tmp_nvalue;
2961 if (UNLIKELY(current_cpu->trace_result_p))
2962 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2963 current_cpu->h_gr_set (FLD (f_Rd), opval);
2966 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
2967 if (UNLIKELY(current_cpu->trace_result_p))
2968 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
2969 current_cpu->h_gr_set (((UINT) 14), opval);
2973 current_cpu->done_insn (npc, status);
2978 // ********** decgrimm2: dec $Rd,#$imm2
2981 xstormy16_sem_decgrimm2 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
2983 #define FLD(f) abuf->fields.sfmt_incgrimm2.f
2984 sem_status status = SEM_STATUS_NORMAL;
2985 xstormy16_scache* abuf = sem;
2986 PCADDR pc = abuf->addr;
2987 PCADDR npc = pc + 2;
2991 tmp_nvalue = SUBSI (current_cpu->h_gr_get (FLD (f_Rd)), ADDSI (FLD (f_imm2), 1));
2993 HI opval = tmp_nvalue;
2994 if (UNLIKELY(current_cpu->trace_result_p))
2995 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
2996 current_cpu->h_gr_set (FLD (f_Rd), opval);
2999 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3000 if (UNLIKELY(current_cpu->trace_result_p))
3001 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3002 current_cpu->h_gr_set (((UINT) 14), opval);
3006 current_cpu->done_insn (npc, status);
3011 // ********** rrcgrgr: rrc $Rd,$Rs
3014 xstormy16_sem_rrcgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3016 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
3017 sem_status status = SEM_STATUS_NORMAL;
3018 xstormy16_scache* abuf = sem;
3019 PCADDR pc = abuf->addr;
3020 PCADDR npc = pc + 2;
3024 tmp_tmpfoo = ORSI (ORSI (ANDSI (SLLSI (current_cpu->h_gr_get (FLD (f_Rd)), 17), 0xfffe0000), current_cpu->h_gr_get (FLD (f_Rd))), SLLSI (current_cpu->h_cy_get (), 16));
3025 tmp_tmpfoo = RORSI (tmp_tmpfoo, ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15));
3029 tmp_nvalue = TRUNCSIHI (tmp_tmpfoo);
3030 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3992), SLLSI (ANDSI (ANDSI (SRLSI (tmp_tmpfoo, 16), 1), 1), 2)), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3032 HI opval = tmp_nvalue;
3033 if (UNLIKELY(current_cpu->trace_result_p))
3034 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3035 current_cpu->h_gr_set (FLD (f_Rd), opval);
3038 SI opval = tmp_newpsw;
3039 if (UNLIKELY(current_cpu->trace_result_p))
3040 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3041 current_cpu->h_gr_set (((UINT) 14), opval);
3046 current_cpu->done_insn (npc, status);
3051 // ********** rrcgrimm4: rrc $Rd,#$imm4
3054 xstormy16_sem_rrcgrimm4 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3056 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
3057 sem_status status = SEM_STATUS_NORMAL;
3058 xstormy16_scache* abuf = sem;
3059 PCADDR pc = abuf->addr;
3060 PCADDR npc = pc + 2;
3064 tmp_tmpfoo = ORSI (ORSI (ANDSI (SLLSI (current_cpu->h_gr_get (FLD (f_Rd)), 17), 0xfffe0000), current_cpu->h_gr_get (FLD (f_Rd))), SLLSI (current_cpu->h_cy_get (), 16));
3065 tmp_tmpfoo = RORSI (tmp_tmpfoo, ANDSI (FLD (f_imm4), 15));
3069 tmp_nvalue = TRUNCSIHI (tmp_tmpfoo);
3070 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3992), SLLSI (ANDSI (ANDSI (SRLSI (tmp_tmpfoo, 16), 1), 1), 2)), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3072 HI opval = tmp_nvalue;
3073 if (UNLIKELY(current_cpu->trace_result_p))
3074 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3075 current_cpu->h_gr_set (FLD (f_Rd), opval);
3078 SI opval = tmp_newpsw;
3079 if (UNLIKELY(current_cpu->trace_result_p))
3080 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3081 current_cpu->h_gr_set (((UINT) 14), opval);
3086 current_cpu->done_insn (npc, status);
3091 // ********** rlcgrgr: rlc $Rd,$Rs
3094 xstormy16_sem_rlcgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3096 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
3097 sem_status status = SEM_STATUS_NORMAL;
3098 xstormy16_scache* abuf = sem;
3099 PCADDR pc = abuf->addr;
3100 PCADDR npc = pc + 2;
3104 tmp_tmpfoo = ORSI (ORSI (ANDSI (SLLSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), 2147352576), current_cpu->h_gr_get (FLD (f_Rd))), ORSI (SLLSI (current_cpu->h_cy_get (), 31), SLLSI (current_cpu->h_cy_get (), 16)));
3105 tmp_tmpfoo = ROLSI (tmp_tmpfoo, ANDSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15), 31));
3109 tmp_nvalue = TRUNCSIHI (tmp_tmpfoo);
3110 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3992), SLLSI (ANDSI (ANDSI (SRLSI (tmp_tmpfoo, 16), 1), 1), 2)), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3112 HI opval = tmp_nvalue;
3113 if (UNLIKELY(current_cpu->trace_result_p))
3114 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3115 current_cpu->h_gr_set (FLD (f_Rd), opval);
3118 SI opval = tmp_newpsw;
3119 if (UNLIKELY(current_cpu->trace_result_p))
3120 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3121 current_cpu->h_gr_set (((UINT) 14), opval);
3126 current_cpu->done_insn (npc, status);
3131 // ********** rlcgrimm4: rlc $Rd,#$imm4
3134 xstormy16_sem_rlcgrimm4 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3136 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
3137 sem_status status = SEM_STATUS_NORMAL;
3138 xstormy16_scache* abuf = sem;
3139 PCADDR pc = abuf->addr;
3140 PCADDR npc = pc + 2;
3144 tmp_tmpfoo = ORSI (ORSI (ANDSI (SLLSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), 2147352576), current_cpu->h_gr_get (FLD (f_Rd))), ORSI (SLLSI (current_cpu->h_cy_get (), 31), SLLSI (current_cpu->h_cy_get (), 16)));
3145 tmp_tmpfoo = ROLSI (tmp_tmpfoo, ANDSI (FLD (f_imm4), 31));
3149 tmp_nvalue = TRUNCSIHI (tmp_tmpfoo);
3150 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3992), SLLSI (ANDSI (ANDSI (SRLSI (tmp_tmpfoo, 16), 1), 1), 2)), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3152 HI opval = tmp_nvalue;
3153 if (UNLIKELY(current_cpu->trace_result_p))
3154 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3155 current_cpu->h_gr_set (FLD (f_Rd), opval);
3158 SI opval = tmp_newpsw;
3159 if (UNLIKELY(current_cpu->trace_result_p))
3160 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3161 current_cpu->h_gr_set (((UINT) 14), opval);
3166 current_cpu->done_insn (npc, status);
3171 // ********** shrgrgr: shr $Rd,$Rs
3174 xstormy16_sem_shrgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3176 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
3177 sem_status status = SEM_STATUS_NORMAL;
3178 xstormy16_scache* abuf = sem;
3179 PCADDR pc = abuf->addr;
3180 PCADDR npc = pc + 2;
3185 tmp_nvalue = SRLSI (current_cpu->h_gr_get (FLD (f_Rd)), ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15));
3186 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3992), SLLSI (ANDSI (ANDSI (((EQSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15), 0)) ? (current_cpu->h_cy_get ()) : (SRLSI (current_cpu->h_gr_get (FLD (f_Rd)), SUBSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15), 1)))), 1), 1), 2)), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3188 HI opval = tmp_nvalue;
3189 if (UNLIKELY(current_cpu->trace_result_p))
3190 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3191 current_cpu->h_gr_set (FLD (f_Rd), opval);
3194 SI opval = tmp_newpsw;
3195 if (UNLIKELY(current_cpu->trace_result_p))
3196 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3197 current_cpu->h_gr_set (((UINT) 14), opval);
3201 current_cpu->done_insn (npc, status);
3206 // ********** shrgrimm: shr $Rd,#$imm4
3209 xstormy16_sem_shrgrimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3211 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
3212 sem_status status = SEM_STATUS_NORMAL;
3213 xstormy16_scache* abuf = sem;
3214 PCADDR pc = abuf->addr;
3215 PCADDR npc = pc + 2;
3220 tmp_nvalue = SRLSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4));
3221 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3992), SLLSI (ANDSI (ANDSI (((EQSI (FLD (f_imm4), 0)) ? (current_cpu->h_cy_get ()) : (SRLSI (current_cpu->h_gr_get (FLD (f_Rd)), SUBSI (FLD (f_imm4), 1)))), 1), 1), 2)), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3223 HI opval = tmp_nvalue;
3224 if (UNLIKELY(current_cpu->trace_result_p))
3225 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3226 current_cpu->h_gr_set (FLD (f_Rd), opval);
3229 SI opval = tmp_newpsw;
3230 if (UNLIKELY(current_cpu->trace_result_p))
3231 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3232 current_cpu->h_gr_set (((UINT) 14), opval);
3236 current_cpu->done_insn (npc, status);
3241 // ********** shlgrgr: shl $Rd,$Rs
3244 xstormy16_sem_shlgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3246 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
3247 sem_status status = SEM_STATUS_NORMAL;
3248 xstormy16_scache* abuf = sem;
3249 PCADDR pc = abuf->addr;
3250 PCADDR npc = pc + 2;
3255 tmp_nvalue = SLLSI (current_cpu->h_gr_get (FLD (f_Rd)), ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15));
3256 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3992), SLLSI (ANDSI (SRLSI (((EQSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15), 0)) ? (SLLSI (current_cpu->h_cy_get (), 15)) : (SLLSI (current_cpu->h_gr_get (FLD (f_Rd)), SUBSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15), 1)))), 15), 1), 2)), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3258 HI opval = tmp_nvalue;
3259 if (UNLIKELY(current_cpu->trace_result_p))
3260 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3261 current_cpu->h_gr_set (FLD (f_Rd), opval);
3264 SI opval = tmp_newpsw;
3265 if (UNLIKELY(current_cpu->trace_result_p))
3266 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3267 current_cpu->h_gr_set (((UINT) 14), opval);
3271 current_cpu->done_insn (npc, status);
3276 // ********** shlgrimm: shl $Rd,#$imm4
3279 xstormy16_sem_shlgrimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3281 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
3282 sem_status status = SEM_STATUS_NORMAL;
3283 xstormy16_scache* abuf = sem;
3284 PCADDR pc = abuf->addr;
3285 PCADDR npc = pc + 2;
3290 tmp_nvalue = SLLSI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4));
3291 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3992), SLLSI (ANDSI (SRLSI (((EQSI (FLD (f_imm4), 0)) ? (SLLSI (current_cpu->h_cy_get (), 15)) : (SLLSI (current_cpu->h_gr_get (FLD (f_Rd)), SUBSI (FLD (f_imm4), 1)))), 15), 1), 2)), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3293 HI opval = tmp_nvalue;
3294 if (UNLIKELY(current_cpu->trace_result_p))
3295 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3296 current_cpu->h_gr_set (FLD (f_Rd), opval);
3299 SI opval = tmp_newpsw;
3300 if (UNLIKELY(current_cpu->trace_result_p))
3301 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3302 current_cpu->h_gr_set (((UINT) 14), opval);
3306 current_cpu->done_insn (npc, status);
3311 // ********** asrgrgr: asr $Rd,$Rs
3314 xstormy16_sem_asrgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3316 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
3317 sem_status status = SEM_STATUS_NORMAL;
3318 xstormy16_scache* abuf = sem;
3319 PCADDR pc = abuf->addr;
3320 PCADDR npc = pc + 2;
3325 tmp_nvalue = SRAHI (current_cpu->h_gr_get (FLD (f_Rd)), ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15));
3326 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3992), SLLSI (ANDSI (ANDSI (((EQSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15), 0)) ? (current_cpu->h_cy_get ()) : (SRLSI (current_cpu->h_gr_get (FLD (f_Rd)), SUBSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15), 1)))), 1), 1), 2)), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3328 HI opval = tmp_nvalue;
3329 if (UNLIKELY(current_cpu->trace_result_p))
3330 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3331 current_cpu->h_gr_set (FLD (f_Rd), opval);
3334 SI opval = tmp_newpsw;
3335 if (UNLIKELY(current_cpu->trace_result_p))
3336 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3337 current_cpu->h_gr_set (((UINT) 14), opval);
3341 current_cpu->done_insn (npc, status);
3346 // ********** asrgrimm: asr $Rd,#$imm4
3349 xstormy16_sem_asrgrimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3351 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
3352 sem_status status = SEM_STATUS_NORMAL;
3353 xstormy16_scache* abuf = sem;
3354 PCADDR pc = abuf->addr;
3355 PCADDR npc = pc + 2;
3360 tmp_nvalue = SRAHI (current_cpu->h_gr_get (FLD (f_Rd)), FLD (f_imm4));
3361 tmp_newpsw = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3992), SLLSI (ANDSI (ANDSI (((EQSI (FLD (f_imm4), 0)) ? (current_cpu->h_cy_get ()) : (SRLSI (current_cpu->h_gr_get (FLD (f_Rd)), SUBSI (FLD (f_imm4), 1)))), 1), 1), 2)), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3363 HI opval = tmp_nvalue;
3364 if (UNLIKELY(current_cpu->trace_result_p))
3365 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3366 current_cpu->h_gr_set (FLD (f_Rd), opval);
3369 SI opval = tmp_newpsw;
3370 if (UNLIKELY(current_cpu->trace_result_p))
3371 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3372 current_cpu->h_gr_set (((UINT) 14), opval);
3376 current_cpu->done_insn (npc, status);
3381 // ********** set1grimm: set1 $Rd,#$imm4
3384 xstormy16_sem_set1grimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3386 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
3387 sem_status status = SEM_STATUS_NORMAL;
3388 xstormy16_scache* abuf = sem;
3389 PCADDR pc = abuf->addr;
3390 PCADDR npc = pc + 2;
3394 tmp_nvalue = ORSI (current_cpu->h_gr_get (FLD (f_Rd)), SLLSI (1, FLD (f_imm4)));
3396 HI opval = tmp_nvalue;
3397 if (UNLIKELY(current_cpu->trace_result_p))
3398 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3399 current_cpu->h_gr_set (FLD (f_Rd), opval);
3402 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3403 if (UNLIKELY(current_cpu->trace_result_p))
3404 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3405 current_cpu->h_gr_set (((UINT) 14), opval);
3409 current_cpu->done_insn (npc, status);
3414 // ********** set1grgr: set1 $Rd,$Rs
3417 xstormy16_sem_set1grgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3419 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
3420 sem_status status = SEM_STATUS_NORMAL;
3421 xstormy16_scache* abuf = sem;
3422 PCADDR pc = abuf->addr;
3423 PCADDR npc = pc + 2;
3427 tmp_nvalue = ORSI (current_cpu->h_gr_get (FLD (f_Rd)), SLLSI (1, ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15)));
3429 HI opval = tmp_nvalue;
3430 if (UNLIKELY(current_cpu->trace_result_p))
3431 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3432 current_cpu->h_gr_set (FLD (f_Rd), opval);
3435 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3436 if (UNLIKELY(current_cpu->trace_result_p))
3437 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3438 current_cpu->h_gr_set (((UINT) 14), opval);
3442 current_cpu->done_insn (npc, status);
3447 // ********** set1lmemimm: set1 $lmem8,#$imm3
3450 xstormy16_sem_set1lmemimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3452 #define FLD(f) abuf->fields.sfmt_set1lmemimm.f
3453 sem_status status = SEM_STATUS_NORMAL;
3454 xstormy16_scache* abuf = sem;
3455 PCADDR pc = abuf->addr;
3456 PCADDR npc = pc + 2;
3460 tmp_nvalue = ORQI (current_cpu->GETMEMQI (pc, FLD (f_lmem8)), SLLSI (1, FLD (f_imm3)));
3462 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (0, 8)), 0), 6))));
3463 if (UNLIKELY(current_cpu->trace_result_p))
3464 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3465 current_cpu->h_gr_set (((UINT) 14), opval);
3468 QI opval = tmp_nvalue;
3469 if (UNLIKELY(current_cpu->trace_result_p))
3470 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) FLD (f_lmem8) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
3471 current_cpu->SETMEMQI (pc, FLD (f_lmem8), opval);
3475 current_cpu->done_insn (npc, status);
3480 // ********** set1hmemimm: set1 $hmem8,#$imm3
3483 xstormy16_sem_set1hmemimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3485 #define FLD(f) abuf->fields.sfmt_set1hmemimm.f
3486 sem_status status = SEM_STATUS_NORMAL;
3487 xstormy16_scache* abuf = sem;
3488 PCADDR pc = abuf->addr;
3489 PCADDR npc = pc + 2;
3493 tmp_nvalue = ORQI (current_cpu->GETMEMQI (pc, FLD (f_hmem8)), SLLSI (1, FLD (f_imm3)));
3495 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (0, 8)), 0), 6))));
3496 if (UNLIKELY(current_cpu->trace_result_p))
3497 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3498 current_cpu->h_gr_set (((UINT) 14), opval);
3501 QI opval = tmp_nvalue;
3502 if (UNLIKELY(current_cpu->trace_result_p))
3503 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) FLD (f_hmem8) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
3504 current_cpu->SETMEMQI (pc, FLD (f_hmem8), opval);
3508 current_cpu->done_insn (npc, status);
3513 // ********** clr1grimm: clr1 $Rd,#$imm4
3516 xstormy16_sem_clr1grimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3518 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
3519 sem_status status = SEM_STATUS_NORMAL;
3520 xstormy16_scache* abuf = sem;
3521 PCADDR pc = abuf->addr;
3522 PCADDR npc = pc + 2;
3526 tmp_nvalue = ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), INVSI (SLLSI (1, FLD (f_imm4))));
3528 HI opval = tmp_nvalue;
3529 if (UNLIKELY(current_cpu->trace_result_p))
3530 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3531 current_cpu->h_gr_set (FLD (f_Rd), opval);
3534 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3535 if (UNLIKELY(current_cpu->trace_result_p))
3536 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3537 current_cpu->h_gr_set (((UINT) 14), opval);
3541 current_cpu->done_insn (npc, status);
3546 // ********** clr1grgr: clr1 $Rd,$Rs
3549 xstormy16_sem_clr1grgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3551 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
3552 sem_status status = SEM_STATUS_NORMAL;
3553 xstormy16_scache* abuf = sem;
3554 PCADDR pc = abuf->addr;
3555 PCADDR npc = pc + 2;
3559 tmp_nvalue = ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), INVSI (SLLSI (1, ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15))));
3561 HI opval = tmp_nvalue;
3562 if (UNLIKELY(current_cpu->trace_result_p))
3563 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3564 current_cpu->h_gr_set (FLD (f_Rd), opval);
3567 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3568 if (UNLIKELY(current_cpu->trace_result_p))
3569 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3570 current_cpu->h_gr_set (((UINT) 14), opval);
3574 current_cpu->done_insn (npc, status);
3579 // ********** clr1lmemimm: clr1 $lmem8,#$imm3
3582 xstormy16_sem_clr1lmemimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3584 #define FLD(f) abuf->fields.sfmt_set1lmemimm.f
3585 sem_status status = SEM_STATUS_NORMAL;
3586 xstormy16_scache* abuf = sem;
3587 PCADDR pc = abuf->addr;
3588 PCADDR npc = pc + 2;
3592 tmp_nvalue = ANDQI (current_cpu->GETMEMQI (pc, FLD (f_lmem8)), INVSI (SLLSI (1, FLD (f_imm3))));
3594 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (0, 8)), 0), 6))));
3595 if (UNLIKELY(current_cpu->trace_result_p))
3596 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3597 current_cpu->h_gr_set (((UINT) 14), opval);
3600 QI opval = tmp_nvalue;
3601 if (UNLIKELY(current_cpu->trace_result_p))
3602 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) FLD (f_lmem8) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
3603 current_cpu->SETMEMQI (pc, FLD (f_lmem8), opval);
3607 current_cpu->done_insn (npc, status);
3612 // ********** clr1hmemimm: clr1 $hmem8,#$imm3
3615 xstormy16_sem_clr1hmemimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3617 #define FLD(f) abuf->fields.sfmt_set1hmemimm.f
3618 sem_status status = SEM_STATUS_NORMAL;
3619 xstormy16_scache* abuf = sem;
3620 PCADDR pc = abuf->addr;
3621 PCADDR npc = pc + 2;
3625 tmp_nvalue = ANDQI (current_cpu->GETMEMQI (pc, FLD (f_hmem8)), INVSI (SLLSI (1, FLD (f_imm3))));
3627 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (0, 8)), 0), 6))));
3628 if (UNLIKELY(current_cpu->trace_result_p))
3629 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3630 current_cpu->h_gr_set (((UINT) 14), opval);
3633 QI opval = tmp_nvalue;
3634 if (UNLIKELY(current_cpu->trace_result_p))
3635 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) FLD (f_hmem8) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
3636 current_cpu->SETMEMQI (pc, FLD (f_hmem8), opval);
3640 current_cpu->done_insn (npc, status);
3645 // ********** cbwgr: cbw $Rd
3648 xstormy16_sem_cbwgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3650 #define FLD(f) abuf->fields.sfmt_jmp.f
3651 sem_status status = SEM_STATUS_NORMAL;
3652 xstormy16_scache* abuf = sem;
3653 PCADDR pc = abuf->addr;
3654 PCADDR npc = pc + 2;
3658 tmp_nvalue = EXTQIHI (TRUNCSIQI (current_cpu->h_gr_get (FLD (f_Rd))));
3660 HI opval = tmp_nvalue;
3661 if (UNLIKELY(current_cpu->trace_result_p))
3662 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3663 current_cpu->h_gr_set (FLD (f_Rd), opval);
3666 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3667 if (UNLIKELY(current_cpu->trace_result_p))
3668 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3669 current_cpu->h_gr_set (((UINT) 14), opval);
3673 current_cpu->done_insn (npc, status);
3678 // ********** revgr: rev $Rd
3681 xstormy16_sem_revgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3683 #define FLD(f) abuf->fields.sfmt_jmp.f
3684 sem_status status = SEM_STATUS_NORMAL;
3685 xstormy16_scache* abuf = sem;
3686 PCADDR pc = abuf->addr;
3687 PCADDR npc = pc + 2;
3691 tmp_nvalue = ORSI (SLLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 1), 15), ORSI (SLLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 2), 13), ORSI (SLLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 4), 11), ORSI (SLLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 8), 9), ORSI (SLLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 16), 7), ORSI (SLLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 32), 5), ORSI (SLLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 64), 3), ORSI (SLLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 128), 1), ORSI (SRLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 256), 1), ORSI (SRLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 512), 3), ORSI (SRLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 1024), 5), ORSI (SRLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 2048), 7), ORSI (SRLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 4096), 9), ORSI (SRLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 8192), 11), ORSI (SRLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 16384), 13), SRLSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 32768), 15))))))))))))))));
3693 HI opval = tmp_nvalue;
3694 if (UNLIKELY(current_cpu->trace_result_p))
3695 current_cpu->trace_stream << "gr" << '[' << FLD (f_Rd) << ']' << ":=0x" << hex << opval << dec << " ";
3696 current_cpu->h_gr_set (FLD (f_Rd), opval);
3699 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3996), ORSI (SLLSI (FLD (f_Rd), 12), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6)))));
3700 if (UNLIKELY(current_cpu->trace_result_p))
3701 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3702 current_cpu->h_gr_set (((UINT) 14), opval);
3706 current_cpu->done_insn (npc, status);
3711 // ********** bccgrgr: b$bcond5 $Rd,$Rs,$rel12
3714 xstormy16_sem_bccgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3716 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
3717 sem_status status = SEM_STATUS_NORMAL;
3718 xstormy16_scache* abuf = sem;
3719 PCADDR pc = abuf->addr;
3720 PCADDR npc = pc + 4;
3725 tmp_value = SUBSI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)));
3727 SI opval = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (SUBOFHI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), 0), 4), SLLHI (SUBCFHI (current_cpu->h_gr_get (FLD (f_Rd)), current_cpu->h_gr_get (FLD (f_Rs)), 0), 2)), ORHI (ANDHI (SRLHI (SUBHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), 15), ANDSI (current_cpu->h_gr_get (FLD (f_Rs)), 15)), 1), 8), SLLSI (FLD (f_Rd), 12))));
3728 if (UNLIKELY(current_cpu->trace_result_p))
3729 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3730 current_cpu->h_gr_set (((UINT) 14), opval);
3735 switch (FLD (f_op5))
3738 tmp_tmp = NOTSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()));
3742 tmp_tmp = NOTSI (current_cpu->h_cy_get ());
3746 tmp_tmp = XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ());
3750 tmp_tmp = current_cpu->h_cy_get ();
3754 tmp_tmp = NOTSI (ORSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()), current_cpu->h_z16_get ()));
3758 tmp_tmp = NOTSI (ORSI (current_cpu->h_cy_get (), current_cpu->h_z16_get ()));
3762 tmp_tmp = ORSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()), current_cpu->h_z16_get ());
3766 tmp_tmp = ORSI (current_cpu->h_cy_get (), current_cpu->h_z16_get ());
3770 tmp_tmp = NOTSI (current_cpu->h_s_get ());
3774 tmp_tmp = NOTSI (current_cpu->h_ov_get ());
3778 tmp_tmp = current_cpu->h_s_get ();
3782 tmp_tmp = current_cpu->h_ov_get ();
3786 tmp_tmp = NOTSI (current_cpu->h_z8_get ());
3790 tmp_tmp = NOTSI (current_cpu->h_z16_get ());
3794 tmp_tmp = current_cpu->h_z8_get ();
3798 tmp_tmp = current_cpu->h_z16_get ();
3804 USI opval = FLD (f_rel12);
3805 if (UNLIKELY(current_cpu->trace_result_p))
3806 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3807 current_cpu->branch (opval, npc, status);
3813 current_cpu->done_cti_insn (npc, status);
3818 // ********** bccgrimm8: b$bcond5 $Rm,#$imm8,$rel12
3821 xstormy16_sem_bccgrimm8 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3823 #define FLD(f) abuf->fields.sfmt_bccgrimm8.f
3824 sem_status status = SEM_STATUS_NORMAL;
3825 xstormy16_scache* abuf = sem;
3826 PCADDR pc = abuf->addr;
3827 PCADDR npc = pc + 4;
3832 tmp_value = SUBSI (current_cpu->h_gr_get (FLD (f_Rm)), FLD (f_imm8));
3834 SI opval = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (SUBOFHI (current_cpu->h_gr_get (FLD (f_Rm)), FLD (f_imm8), 0), 4), SLLHI (SUBCFHI (current_cpu->h_gr_get (FLD (f_Rm)), FLD (f_imm8), 0), 2)), ORHI (ANDHI (SRLHI (SUBHI (ANDSI (current_cpu->h_gr_get (FLD (f_Rm)), 15), ANDSI (FLD (f_imm8), 15)), 1), 8), SLLSI (FLD (f_Rm), 12))));
3835 if (UNLIKELY(current_cpu->trace_result_p))
3836 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3837 current_cpu->h_gr_set (((UINT) 14), opval);
3842 switch (FLD (f_op5))
3845 tmp_tmp = NOTSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()));
3849 tmp_tmp = NOTSI (current_cpu->h_cy_get ());
3853 tmp_tmp = XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ());
3857 tmp_tmp = current_cpu->h_cy_get ();
3861 tmp_tmp = NOTSI (ORSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()), current_cpu->h_z16_get ()));
3865 tmp_tmp = NOTSI (ORSI (current_cpu->h_cy_get (), current_cpu->h_z16_get ()));
3869 tmp_tmp = ORSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()), current_cpu->h_z16_get ());
3873 tmp_tmp = ORSI (current_cpu->h_cy_get (), current_cpu->h_z16_get ());
3877 tmp_tmp = NOTSI (current_cpu->h_s_get ());
3881 tmp_tmp = NOTSI (current_cpu->h_ov_get ());
3885 tmp_tmp = current_cpu->h_s_get ();
3889 tmp_tmp = current_cpu->h_ov_get ();
3893 tmp_tmp = NOTSI (current_cpu->h_z8_get ());
3897 tmp_tmp = NOTSI (current_cpu->h_z16_get ());
3901 tmp_tmp = current_cpu->h_z8_get ();
3905 tmp_tmp = current_cpu->h_z16_get ();
3911 USI opval = FLD (f_rel12);
3912 if (UNLIKELY(current_cpu->trace_result_p))
3913 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3914 current_cpu->branch (opval, npc, status);
3920 current_cpu->done_cti_insn (npc, status);
3925 // ********** bccimm16: b$bcond2 Rx,#$imm16,${rel8-4}
3928 xstormy16_sem_bccimm16 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
3930 #define FLD(f) abuf->fields.sfmt_bccimm16.f
3931 sem_status status = SEM_STATUS_NORMAL;
3932 xstormy16_scache* abuf = sem;
3933 PCADDR pc = abuf->addr;
3934 PCADDR npc = pc + 4;
3939 tmp_value = SUBHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm16));
3941 SI opval = ORSI (ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 3968), ORBI (ORBI (EQHI (ANDHI (tmp_value, 255), 0), SLLHI (EQHI (tmp_value, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_value), 5), SLLHI (LTQI (SRLHI (tmp_value, MULSI (1, 8)), 0), 6)))), ORHI (ORHI (SLLHI (SUBOFHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm16), 0), 4), SLLHI (SUBCFHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), FLD (f_imm16), 0), 2)), ORHI (ANDHI (SRLHI (SUBHI (ANDHI (current_cpu->h_gr_get (current_cpu->h_Rpsw_get ()), 15), ANDSI (FLD (f_imm16), 15)), 1), 8), SLLSI (current_cpu->h_Rpsw_get (), 12))));
3942 if (UNLIKELY(current_cpu->trace_result_p))
3943 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
3944 current_cpu->h_gr_set (((UINT) 14), opval);
3949 switch (FLD (f_op2))
3952 tmp_tmp = NOTSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()));
3956 tmp_tmp = NOTSI (current_cpu->h_cy_get ());
3960 tmp_tmp = XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ());
3964 tmp_tmp = current_cpu->h_cy_get ();
3968 tmp_tmp = NOTSI (ORSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()), current_cpu->h_z16_get ()));
3972 tmp_tmp = NOTSI (ORSI (current_cpu->h_cy_get (), current_cpu->h_z16_get ()));
3976 tmp_tmp = ORSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()), current_cpu->h_z16_get ());
3980 tmp_tmp = ORSI (current_cpu->h_cy_get (), current_cpu->h_z16_get ());
3984 tmp_tmp = NOTSI (current_cpu->h_s_get ());
3988 tmp_tmp = NOTSI (current_cpu->h_ov_get ());
3992 tmp_tmp = current_cpu->h_s_get ();
3996 tmp_tmp = current_cpu->h_ov_get ();
4000 tmp_tmp = NOTSI (current_cpu->h_z8_get ());
4004 tmp_tmp = NOTSI (current_cpu->h_z16_get ());
4008 tmp_tmp = current_cpu->h_z8_get ();
4012 tmp_tmp = current_cpu->h_z16_get ();
4018 USI opval = FLD (f_rel8_4);
4019 if (UNLIKELY(current_cpu->trace_result_p))
4020 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4021 current_cpu->branch (opval, npc, status);
4027 current_cpu->done_cti_insn (npc, status);
4032 // ********** bngrimm4: bn $Rd,#$imm4,$rel12
4035 xstormy16_sem_bngrimm4 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4037 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
4038 sem_status status = SEM_STATUS_NORMAL;
4039 xstormy16_scache* abuf = sem;
4040 PCADDR pc = abuf->addr;
4041 PCADDR npc = pc + 4;
4045 SI opval = FLD (f_Rd);
4046 if (UNLIKELY(current_cpu->trace_result_p))
4047 current_cpu->trace_stream << "Rpsw" << ":=0x" << hex << opval << dec << " ";
4048 current_cpu->h_Rpsw_set (opval);
4050 if (EQSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), SLLSI (1, FLD (f_imm4))), 0)) {
4052 USI opval = FLD (f_rel12);
4053 if (UNLIKELY(current_cpu->trace_result_p))
4054 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4055 current_cpu->branch (opval, npc, status);
4060 current_cpu->done_cti_insn (npc, status);
4065 // ********** bngrgr: bn $Rd,$Rs,$rel12
4068 xstormy16_sem_bngrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4070 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
4071 sem_status status = SEM_STATUS_NORMAL;
4072 xstormy16_scache* abuf = sem;
4073 PCADDR pc = abuf->addr;
4074 PCADDR npc = pc + 4;
4078 SI opval = FLD (f_Rd);
4079 if (UNLIKELY(current_cpu->trace_result_p))
4080 current_cpu->trace_stream << "Rpsw" << ":=0x" << hex << opval << dec << " ";
4081 current_cpu->h_Rpsw_set (opval);
4083 if (EQSI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), SLLSI (1, current_cpu->h_gr_get (FLD (f_Rs)))), 0)) {
4085 USI opval = FLD (f_rel12);
4086 if (UNLIKELY(current_cpu->trace_result_p))
4087 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4088 current_cpu->branch (opval, npc, status);
4093 current_cpu->done_cti_insn (npc, status);
4098 // ********** bnlmemimm: bn $lmem8,#$imm3b,$rel12
4101 xstormy16_sem_bnlmemimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4103 #define FLD(f) abuf->fields.sfmt_bnlmemimm.f
4104 sem_status status = SEM_STATUS_NORMAL;
4105 xstormy16_scache* abuf = sem;
4106 PCADDR pc = abuf->addr;
4107 PCADDR npc = pc + 4;
4109 if (EQQI (ANDQI (current_cpu->GETMEMQI (pc, FLD (f_lmem8)), SLLSI (1, FLD (f_imm3b))), 0)) {
4111 USI opval = FLD (f_rel12);
4112 if (UNLIKELY(current_cpu->trace_result_p))
4113 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4114 current_cpu->branch (opval, npc, status);
4118 current_cpu->done_cti_insn (npc, status);
4123 // ********** bnhmemimm: bn $hmem8,#$imm3b,$rel12
4126 xstormy16_sem_bnhmemimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4128 #define FLD(f) abuf->fields.sfmt_bnhmemimm.f
4129 sem_status status = SEM_STATUS_NORMAL;
4130 xstormy16_scache* abuf = sem;
4131 PCADDR pc = abuf->addr;
4132 PCADDR npc = pc + 4;
4134 if (EQQI (ANDQI (current_cpu->GETMEMQI (pc, FLD (f_hmem8)), SLLSI (1, FLD (f_imm3b))), 0)) {
4136 USI opval = FLD (f_rel12);
4137 if (UNLIKELY(current_cpu->trace_result_p))
4138 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4139 current_cpu->branch (opval, npc, status);
4143 current_cpu->done_cti_insn (npc, status);
4148 // ********** bpgrimm4: bp $Rd,#$imm4,$rel12
4151 xstormy16_sem_bpgrimm4 (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4153 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
4154 sem_status status = SEM_STATUS_NORMAL;
4155 xstormy16_scache* abuf = sem;
4156 PCADDR pc = abuf->addr;
4157 PCADDR npc = pc + 4;
4161 SI opval = FLD (f_Rd);
4162 if (UNLIKELY(current_cpu->trace_result_p))
4163 current_cpu->trace_stream << "Rpsw" << ":=0x" << hex << opval << dec << " ";
4164 current_cpu->h_Rpsw_set (opval);
4166 if (NESI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), SLLSI (1, FLD (f_imm4))), 0)) {
4168 USI opval = FLD (f_rel12);
4169 if (UNLIKELY(current_cpu->trace_result_p))
4170 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4171 current_cpu->branch (opval, npc, status);
4176 current_cpu->done_cti_insn (npc, status);
4181 // ********** bpgrgr: bp $Rd,$Rs,$rel12
4184 xstormy16_sem_bpgrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4186 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
4187 sem_status status = SEM_STATUS_NORMAL;
4188 xstormy16_scache* abuf = sem;
4189 PCADDR pc = abuf->addr;
4190 PCADDR npc = pc + 4;
4194 SI opval = FLD (f_Rd);
4195 if (UNLIKELY(current_cpu->trace_result_p))
4196 current_cpu->trace_stream << "Rpsw" << ":=0x" << hex << opval << dec << " ";
4197 current_cpu->h_Rpsw_set (opval);
4199 if (NESI (ANDSI (current_cpu->h_gr_get (FLD (f_Rd)), SLLSI (1, current_cpu->h_gr_get (FLD (f_Rs)))), 0)) {
4201 USI opval = FLD (f_rel12);
4202 if (UNLIKELY(current_cpu->trace_result_p))
4203 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4204 current_cpu->branch (opval, npc, status);
4209 current_cpu->done_cti_insn (npc, status);
4214 // ********** bplmemimm: bp $lmem8,#$imm3b,$rel12
4217 xstormy16_sem_bplmemimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4219 #define FLD(f) abuf->fields.sfmt_bnlmemimm.f
4220 sem_status status = SEM_STATUS_NORMAL;
4221 xstormy16_scache* abuf = sem;
4222 PCADDR pc = abuf->addr;
4223 PCADDR npc = pc + 4;
4225 if (NEQI (ANDQI (current_cpu->GETMEMQI (pc, FLD (f_lmem8)), SLLSI (1, FLD (f_imm3b))), 0)) {
4227 USI opval = FLD (f_rel12);
4228 if (UNLIKELY(current_cpu->trace_result_p))
4229 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4230 current_cpu->branch (opval, npc, status);
4234 current_cpu->done_cti_insn (npc, status);
4239 // ********** bphmemimm: bp $hmem8,#$imm3b,$rel12
4242 xstormy16_sem_bphmemimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4244 #define FLD(f) abuf->fields.sfmt_bnhmemimm.f
4245 sem_status status = SEM_STATUS_NORMAL;
4246 xstormy16_scache* abuf = sem;
4247 PCADDR pc = abuf->addr;
4248 PCADDR npc = pc + 4;
4250 if (NEQI (ANDQI (current_cpu->GETMEMQI (pc, FLD (f_hmem8)), SLLSI (1, FLD (f_imm3b))), 0)) {
4252 USI opval = FLD (f_rel12);
4253 if (UNLIKELY(current_cpu->trace_result_p))
4254 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4255 current_cpu->branch (opval, npc, status);
4259 current_cpu->done_cti_insn (npc, status);
4264 // ********** bcc: b$bcond2 ${rel8-2}
4267 xstormy16_sem_bcc (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4269 #define FLD(f) abuf->fields.sfmt_bcc.f
4270 sem_status status = SEM_STATUS_NORMAL;
4271 xstormy16_scache* abuf = sem;
4272 PCADDR pc = abuf->addr;
4273 PCADDR npc = pc + 2;
4277 switch (FLD (f_op2))
4280 tmp_tmp = NOTSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()));
4284 tmp_tmp = NOTSI (current_cpu->h_cy_get ());
4288 tmp_tmp = XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ());
4292 tmp_tmp = current_cpu->h_cy_get ();
4296 tmp_tmp = NOTSI (ORSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()), current_cpu->h_z16_get ()));
4300 tmp_tmp = NOTSI (ORSI (current_cpu->h_cy_get (), current_cpu->h_z16_get ()));
4304 tmp_tmp = ORSI (XORSI (current_cpu->h_s_get (), current_cpu->h_ov_get ()), current_cpu->h_z16_get ());
4308 tmp_tmp = ORSI (current_cpu->h_cy_get (), current_cpu->h_z16_get ());
4312 tmp_tmp = NOTSI (current_cpu->h_s_get ());
4316 tmp_tmp = NOTSI (current_cpu->h_ov_get ());
4320 tmp_tmp = current_cpu->h_s_get ();
4324 tmp_tmp = current_cpu->h_ov_get ();
4328 tmp_tmp = NOTSI (current_cpu->h_z8_get ());
4332 tmp_tmp = NOTSI (current_cpu->h_z16_get ());
4336 tmp_tmp = current_cpu->h_z8_get ();
4340 tmp_tmp = current_cpu->h_z16_get ();
4346 USI opval = FLD (f_rel8_2);
4347 if (UNLIKELY(current_cpu->trace_result_p))
4348 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4349 current_cpu->branch (opval, npc, status);
4354 current_cpu->done_cti_insn (npc, status);
4359 // ********** bgr: br $Rd
4362 xstormy16_sem_bgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4364 #define FLD(f) abuf->fields.sfmt_jmp.f
4365 sem_status status = SEM_STATUS_NORMAL;
4366 xstormy16_scache* abuf = sem;
4367 PCADDR pc = abuf->addr;
4368 PCADDR npc = pc + 2;
4371 USI opval = ADDSI (ADDSI (pc, 2), current_cpu->h_gr_get (FLD (f_Rd)));
4372 if (UNLIKELY(current_cpu->trace_result_p))
4373 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4374 current_cpu->branch (opval, npc, status);
4377 current_cpu->done_cti_insn (npc, status);
4382 // ********** br: br $rel12a
4385 xstormy16_sem_br (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4387 #define FLD(f) abuf->fields.sfmt_br.f
4388 sem_status status = SEM_STATUS_NORMAL;
4389 xstormy16_scache* abuf = sem;
4390 PCADDR pc = abuf->addr;
4391 PCADDR npc = pc + 2;
4394 USI opval = FLD (f_rel12a);
4395 if (UNLIKELY(current_cpu->trace_result_p))
4396 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4397 current_cpu->branch (opval, npc, status);
4400 current_cpu->done_cti_insn (npc, status);
4405 // ********** jmp: jmp $Rbj,$Rd
4408 xstormy16_sem_jmp (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4410 #define FLD(f) abuf->fields.sfmt_jmp.f
4411 sem_status status = SEM_STATUS_NORMAL;
4412 xstormy16_scache* abuf = sem;
4413 PCADDR pc = abuf->addr;
4414 PCADDR npc = pc + 2;
4417 USI opval = JOINHISI (current_cpu->h_Rbj_get (FLD (f_Rbj)), current_cpu->h_gr_get (FLD (f_Rd)));
4418 if (UNLIKELY(current_cpu->trace_result_p))
4419 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4420 current_cpu->branch (opval, npc, status);
4423 current_cpu->done_cti_insn (npc, status);
4428 // ********** jmpf: jmpf $abs24
4431 xstormy16_sem_jmpf (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4433 #define FLD(f) abuf->fields.sfmt_jmpf.f
4434 sem_status status = SEM_STATUS_NORMAL;
4435 xstormy16_scache* abuf = sem;
4436 PCADDR pc = abuf->addr;
4437 PCADDR npc = pc + 4;
4440 USI opval = FLD (f_abs24);
4441 if (UNLIKELY(current_cpu->trace_result_p))
4442 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4443 current_cpu->branch (opval, npc, status);
4446 current_cpu->done_cti_insn (npc, status);
4451 // ********** callrgr: callr $Rd
4454 xstormy16_sem_callrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4456 #define FLD(f) abuf->fields.sfmt_jmp.f
4457 sem_status status = SEM_STATUS_NORMAL;
4458 xstormy16_scache* abuf = sem;
4459 PCADDR pc = abuf->addr;
4460 PCADDR npc = pc + 2;
4464 SI opval = ADDSI (pc, 2);
4465 if (UNLIKELY(current_cpu->trace_result_p))
4466 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) current_cpu->h_gr_get (((UINT) 15)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
4467 current_cpu->SETMEMSI (pc, current_cpu->h_gr_get (((UINT) 15)), opval);
4470 SI opval = ADDSI (current_cpu->h_gr_get (((UINT) 15)), 4);
4471 if (UNLIKELY(current_cpu->trace_result_p))
4472 current_cpu->trace_stream << "gr" << '[' << ((UINT) 15) << ']' << ":=0x" << hex << opval << dec << " ";
4473 current_cpu->h_gr_set (((UINT) 15), opval);
4476 USI opval = ADDSI (current_cpu->h_gr_get (FLD (f_Rd)), ADDSI (pc, 2));
4477 if (UNLIKELY(current_cpu->trace_result_p))
4478 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4479 current_cpu->branch (opval, npc, status);
4483 current_cpu->done_cti_insn (npc, status);
4488 // ********** callrimm: callr $rel12a
4491 xstormy16_sem_callrimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4493 #define FLD(f) abuf->fields.sfmt_br.f
4494 sem_status status = SEM_STATUS_NORMAL;
4495 xstormy16_scache* abuf = sem;
4496 PCADDR pc = abuf->addr;
4497 PCADDR npc = pc + 2;
4501 SI opval = ADDSI (pc, 2);
4502 if (UNLIKELY(current_cpu->trace_result_p))
4503 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) current_cpu->h_gr_get (((UINT) 15)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
4504 current_cpu->SETMEMSI (pc, current_cpu->h_gr_get (((UINT) 15)), opval);
4507 SI opval = ADDSI (current_cpu->h_gr_get (((UINT) 15)), 4);
4508 if (UNLIKELY(current_cpu->trace_result_p))
4509 current_cpu->trace_stream << "gr" << '[' << ((UINT) 15) << ']' << ":=0x" << hex << opval << dec << " ";
4510 current_cpu->h_gr_set (((UINT) 15), opval);
4513 USI opval = FLD (f_rel12a);
4514 if (UNLIKELY(current_cpu->trace_result_p))
4515 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4516 current_cpu->branch (opval, npc, status);
4520 current_cpu->done_cti_insn (npc, status);
4525 // ********** callgr: call $Rbj,$Rd
4528 xstormy16_sem_callgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4530 #define FLD(f) abuf->fields.sfmt_jmp.f
4531 sem_status status = SEM_STATUS_NORMAL;
4532 xstormy16_scache* abuf = sem;
4533 PCADDR pc = abuf->addr;
4534 PCADDR npc = pc + 2;
4538 SI opval = ADDSI (pc, 2);
4539 if (UNLIKELY(current_cpu->trace_result_p))
4540 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) current_cpu->h_gr_get (((UINT) 15)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
4541 current_cpu->SETMEMSI (pc, current_cpu->h_gr_get (((UINT) 15)), opval);
4544 SI opval = ADDSI (current_cpu->h_gr_get (((UINT) 15)), 4);
4545 if (UNLIKELY(current_cpu->trace_result_p))
4546 current_cpu->trace_stream << "gr" << '[' << ((UINT) 15) << ']' << ":=0x" << hex << opval << dec << " ";
4547 current_cpu->h_gr_set (((UINT) 15), opval);
4550 USI opval = JOINHISI (current_cpu->h_Rbj_get (FLD (f_Rbj)), current_cpu->h_gr_get (FLD (f_Rd)));
4551 if (UNLIKELY(current_cpu->trace_result_p))
4552 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4553 current_cpu->branch (opval, npc, status);
4557 current_cpu->done_cti_insn (npc, status);
4562 // ********** callfimm: callf $abs24
4565 xstormy16_sem_callfimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4567 #define FLD(f) abuf->fields.sfmt_jmpf.f
4568 sem_status status = SEM_STATUS_NORMAL;
4569 xstormy16_scache* abuf = sem;
4570 PCADDR pc = abuf->addr;
4571 PCADDR npc = pc + 4;
4575 SI opval = ADDSI (pc, 4);
4576 if (UNLIKELY(current_cpu->trace_result_p))
4577 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) current_cpu->h_gr_get (((UINT) 15)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
4578 current_cpu->SETMEMSI (pc, current_cpu->h_gr_get (((UINT) 15)), opval);
4581 SI opval = ADDSI (current_cpu->h_gr_get (((UINT) 15)), 4);
4582 if (UNLIKELY(current_cpu->trace_result_p))
4583 current_cpu->trace_stream << "gr" << '[' << ((UINT) 15) << ']' << ":=0x" << hex << opval << dec << " ";
4584 current_cpu->h_gr_set (((UINT) 15), opval);
4587 USI opval = FLD (f_abs24);
4588 if (UNLIKELY(current_cpu->trace_result_p))
4589 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4590 current_cpu->branch (opval, npc, status);
4594 current_cpu->done_cti_insn (npc, status);
4599 // ********** icallrgr: icallr $Rd
4602 xstormy16_sem_icallrgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4604 #define FLD(f) abuf->fields.sfmt_jmp.f
4605 sem_status status = SEM_STATUS_NORMAL;
4606 xstormy16_scache* abuf = sem;
4607 PCADDR pc = abuf->addr;
4608 PCADDR npc = pc + 2;
4612 SI opval = ADDSI (pc, 2);
4613 if (UNLIKELY(current_cpu->trace_result_p))
4614 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) current_cpu->h_gr_get (((UINT) 15)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
4615 current_cpu->SETMEMSI (pc, current_cpu->h_gr_get (((UINT) 15)), opval);
4618 HI opval = current_cpu->h_gr_get (((UINT) 14));
4619 if (UNLIKELY(current_cpu->trace_result_p))
4620 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (current_cpu->h_gr_get (((UINT) 15)), 4) << dec << ']' << ":=0x" << hex << opval << dec << " ";
4621 current_cpu->SETMEMHI (pc, ADDSI (current_cpu->h_gr_get (((UINT) 15)), 4), opval);
4624 SI opval = ADDSI (current_cpu->h_gr_get (((UINT) 15)), 6);
4625 if (UNLIKELY(current_cpu->trace_result_p))
4626 current_cpu->trace_stream << "gr" << '[' << ((UINT) 15) << ']' << ":=0x" << hex << opval << dec << " ";
4627 current_cpu->h_gr_set (((UINT) 15), opval);
4630 USI opval = ADDSI (current_cpu->h_gr_get (FLD (f_Rd)), ADDSI (pc, 2));
4631 if (UNLIKELY(current_cpu->trace_result_p))
4632 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4633 current_cpu->branch (opval, npc, status);
4637 current_cpu->done_cti_insn (npc, status);
4642 // ********** icallgr: icall $Rbj,$Rd
4645 xstormy16_sem_icallgr (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4647 #define FLD(f) abuf->fields.sfmt_jmp.f
4648 sem_status status = SEM_STATUS_NORMAL;
4649 xstormy16_scache* abuf = sem;
4650 PCADDR pc = abuf->addr;
4651 PCADDR npc = pc + 2;
4655 SI opval = ADDSI (pc, 2);
4656 if (UNLIKELY(current_cpu->trace_result_p))
4657 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) current_cpu->h_gr_get (((UINT) 15)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
4658 current_cpu->SETMEMSI (pc, current_cpu->h_gr_get (((UINT) 15)), opval);
4661 HI opval = current_cpu->h_gr_get (((UINT) 14));
4662 if (UNLIKELY(current_cpu->trace_result_p))
4663 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (current_cpu->h_gr_get (((UINT) 15)), 4) << dec << ']' << ":=0x" << hex << opval << dec << " ";
4664 current_cpu->SETMEMHI (pc, ADDSI (current_cpu->h_gr_get (((UINT) 15)), 4), opval);
4667 SI opval = ADDSI (current_cpu->h_gr_get (((UINT) 15)), 6);
4668 if (UNLIKELY(current_cpu->trace_result_p))
4669 current_cpu->trace_stream << "gr" << '[' << ((UINT) 15) << ']' << ":=0x" << hex << opval << dec << " ";
4670 current_cpu->h_gr_set (((UINT) 15), opval);
4673 USI opval = JOINHISI (current_cpu->h_Rbj_get (FLD (f_Rbj)), current_cpu->h_gr_get (FLD (f_Rd)));
4674 if (UNLIKELY(current_cpu->trace_result_p))
4675 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4676 current_cpu->branch (opval, npc, status);
4680 current_cpu->done_cti_insn (npc, status);
4685 // ********** icallfimm: icallf $abs24
4688 xstormy16_sem_icallfimm (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4690 #define FLD(f) abuf->fields.sfmt_jmpf.f
4691 sem_status status = SEM_STATUS_NORMAL;
4692 xstormy16_scache* abuf = sem;
4693 PCADDR pc = abuf->addr;
4694 PCADDR npc = pc + 4;
4698 SI opval = ADDSI (pc, 4);
4699 if (UNLIKELY(current_cpu->trace_result_p))
4700 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) current_cpu->h_gr_get (((UINT) 15)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
4701 current_cpu->SETMEMSI (pc, current_cpu->h_gr_get (((UINT) 15)), opval);
4704 HI opval = current_cpu->h_gr_get (((UINT) 14));
4705 if (UNLIKELY(current_cpu->trace_result_p))
4706 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (current_cpu->h_gr_get (((UINT) 15)), 4) << dec << ']' << ":=0x" << hex << opval << dec << " ";
4707 current_cpu->SETMEMHI (pc, ADDSI (current_cpu->h_gr_get (((UINT) 15)), 4), opval);
4710 SI opval = ADDSI (current_cpu->h_gr_get (((UINT) 15)), 6);
4711 if (UNLIKELY(current_cpu->trace_result_p))
4712 current_cpu->trace_stream << "gr" << '[' << ((UINT) 15) << ']' << ":=0x" << hex << opval << dec << " ";
4713 current_cpu->h_gr_set (((UINT) 15), opval);
4716 USI opval = FLD (f_abs24);
4717 if (UNLIKELY(current_cpu->trace_result_p))
4718 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4719 current_cpu->branch (opval, npc, status);
4723 current_cpu->done_cti_insn (npc, status);
4728 // ********** iret: iret
4731 xstormy16_sem_iret (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4733 #define FLD(f) abuf->fields.fmt_empty.f
4734 sem_status status = SEM_STATUS_NORMAL;
4735 xstormy16_scache* abuf = sem;
4736 PCADDR pc = abuf->addr;
4737 PCADDR npc = pc + 2;
4741 SI opval = SUBSI (current_cpu->h_gr_get (((UINT) 15)), 6);
4742 if (UNLIKELY(current_cpu->trace_result_p))
4743 current_cpu->trace_stream << "gr" << '[' << ((UINT) 15) << ']' << ":=0x" << hex << opval << dec << " ";
4744 current_cpu->h_gr_set (((UINT) 15), opval);
4747 USI opval = current_cpu->GETMEMSI (pc, current_cpu->h_gr_get (((UINT) 15)));
4748 if (UNLIKELY(current_cpu->trace_result_p))
4749 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4750 current_cpu->branch (opval, npc, status);
4753 SI opval = current_cpu->GETMEMHI (pc, ADDSI (current_cpu->h_gr_get (((UINT) 15)), 4));
4754 if (UNLIKELY(current_cpu->trace_result_p))
4755 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
4756 current_cpu->h_gr_set (((UINT) 14), opval);
4760 current_cpu->done_cti_insn (npc, status);
4765 // ********** ret: ret
4768 xstormy16_sem_ret (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4770 #define FLD(f) abuf->fields.fmt_empty.f
4771 sem_status status = SEM_STATUS_NORMAL;
4772 xstormy16_scache* abuf = sem;
4773 PCADDR pc = abuf->addr;
4774 PCADDR npc = pc + 2;
4778 SI opval = SUBSI (current_cpu->h_gr_get (((UINT) 15)), 4);
4779 if (UNLIKELY(current_cpu->trace_result_p))
4780 current_cpu->trace_stream << "gr" << '[' << ((UINT) 15) << ']' << ":=0x" << hex << opval << dec << " ";
4781 current_cpu->h_gr_set (((UINT) 15), opval);
4784 USI opval = current_cpu->GETMEMSI (pc, current_cpu->h_gr_get (((UINT) 15)));
4785 if (UNLIKELY(current_cpu->trace_result_p))
4786 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4787 current_cpu->branch (opval, npc, status);
4791 current_cpu->done_cti_insn (npc, status);
4796 // ********** mul: mul
4799 xstormy16_sem_mul (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4801 #define FLD(f) abuf->fields.fmt_empty.f
4802 sem_status status = SEM_STATUS_NORMAL;
4803 xstormy16_scache* abuf = sem;
4804 PCADDR pc = abuf->addr;
4805 PCADDR npc = pc + 2;
4809 tmp_value = MULSI (ANDSI (current_cpu->h_gr_get (((UINT) 0)), 65535), ANDSI (current_cpu->h_gr_get (((UINT) 2)), 65535));
4811 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (TRUNCSIHI (tmp_value), 255), 0), SLLHI (EQHI (TRUNCSIHI (tmp_value), 0), 1)), ORHI (SLLHI (current_cpu->parity (TRUNCSIHI (tmp_value)), 5), SLLHI (LTQI (SRLHI (TRUNCSIHI (tmp_value), MULSI (1, 8)), 0), 6))));
4812 if (UNLIKELY(current_cpu->trace_result_p))
4813 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
4814 current_cpu->h_gr_set (((UINT) 14), opval);
4817 SI opval = TRUNCSIHI (tmp_value);
4818 if (UNLIKELY(current_cpu->trace_result_p))
4819 current_cpu->trace_stream << "gr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
4820 current_cpu->h_gr_set (((UINT) 0), opval);
4823 SI opval = TRUNCSIHI (SRLSI (tmp_value, 16));
4824 if (UNLIKELY(current_cpu->trace_result_p))
4825 current_cpu->trace_stream << "gr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
4826 current_cpu->h_gr_set (((UINT) 1), opval);
4830 current_cpu->done_insn (npc, status);
4835 // ********** div: div
4838 xstormy16_sem_div (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4840 #define FLD(f) abuf->fields.fmt_empty.f
4841 sem_status status = SEM_STATUS_NORMAL;
4842 xstormy16_scache* abuf = sem;
4843 PCADDR pc = abuf->addr;
4844 PCADDR npc = pc + 2;
4848 SI opval = UMODSI (current_cpu->h_gr_get (((UINT) 0)), current_cpu->h_gr_get (((UINT) 2)));
4849 if (UNLIKELY(current_cpu->trace_result_p))
4850 current_cpu->trace_stream << "gr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
4851 current_cpu->h_gr_set (((UINT) 1), opval);
4855 tmp_nvalue = UDIVSI (current_cpu->h_gr_get (((UINT) 0)), current_cpu->h_gr_get (((UINT) 2)));
4857 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6))));
4858 if (UNLIKELY(current_cpu->trace_result_p))
4859 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
4860 current_cpu->h_gr_set (((UINT) 14), opval);
4863 SI opval = tmp_nvalue;
4864 if (UNLIKELY(current_cpu->trace_result_p))
4865 current_cpu->trace_stream << "gr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
4866 current_cpu->h_gr_set (((UINT) 0), opval);
4871 current_cpu->done_insn (npc, status);
4876 // ********** sdiv: sdiv
4879 xstormy16_sem_sdiv (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4881 #define FLD(f) abuf->fields.fmt_empty.f
4882 sem_status status = SEM_STATUS_NORMAL;
4883 xstormy16_scache* abuf = sem;
4884 PCADDR pc = abuf->addr;
4885 PCADDR npc = pc + 2;
4889 SI opval = MODHI (current_cpu->h_gr_get (((UINT) 0)), current_cpu->h_gr_get (((UINT) 2)));
4890 if (UNLIKELY(current_cpu->trace_result_p))
4891 current_cpu->trace_stream << "gr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
4892 current_cpu->h_gr_set (((UINT) 1), opval);
4896 tmp_nvalue = DIVHI (current_cpu->h_gr_get (((UINT) 0)), current_cpu->h_gr_get (((UINT) 2)));
4898 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6))));
4899 if (UNLIKELY(current_cpu->trace_result_p))
4900 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
4901 current_cpu->h_gr_set (((UINT) 14), opval);
4904 SI opval = tmp_nvalue;
4905 if (UNLIKELY(current_cpu->trace_result_p))
4906 current_cpu->trace_stream << "gr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
4907 current_cpu->h_gr_set (((UINT) 0), opval);
4912 current_cpu->done_insn (npc, status);
4917 // ********** sdivlh: sdivlh
4920 xstormy16_sem_sdivlh (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4922 #define FLD(f) abuf->fields.fmt_empty.f
4923 sem_status status = SEM_STATUS_NORMAL;
4924 xstormy16_scache* abuf = sem;
4925 PCADDR pc = abuf->addr;
4926 PCADDR npc = pc + 2;
4930 tmp_value = ADDSI (SLLSI (ANDSI (current_cpu->h_gr_get (((UINT) 1)), 65535), 16), ANDSI (current_cpu->h_gr_get (((UINT) 0)), 65535));
4932 SI opval = MODSI (tmp_value, EXTHISI (TRUNCSIHI (current_cpu->h_gr_get (((UINT) 2)))));
4933 if (UNLIKELY(current_cpu->trace_result_p))
4934 current_cpu->trace_stream << "gr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
4935 current_cpu->h_gr_set (((UINT) 1), opval);
4939 tmp_nvalue = DIVSI (tmp_value, EXTHISI (TRUNCSIHI (current_cpu->h_gr_get (((UINT) 2)))));
4941 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6))));
4942 if (UNLIKELY(current_cpu->trace_result_p))
4943 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
4944 current_cpu->h_gr_set (((UINT) 14), opval);
4947 SI opval = tmp_nvalue;
4948 if (UNLIKELY(current_cpu->trace_result_p))
4949 current_cpu->trace_stream << "gr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
4950 current_cpu->h_gr_set (((UINT) 0), opval);
4955 current_cpu->done_insn (npc, status);
4960 // ********** divlh: divlh
4963 xstormy16_sem_divlh (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
4965 #define FLD(f) abuf->fields.fmt_empty.f
4966 sem_status status = SEM_STATUS_NORMAL;
4967 xstormy16_scache* abuf = sem;
4968 PCADDR pc = abuf->addr;
4969 PCADDR npc = pc + 2;
4973 tmp_value = ADDSI (SLLSI (ANDSI (current_cpu->h_gr_get (((UINT) 1)), 65535), 16), ANDSI (current_cpu->h_gr_get (((UINT) 0)), 65535));
4975 SI opval = UMODSI (tmp_value, current_cpu->h_gr_get (((UINT) 2)));
4976 if (UNLIKELY(current_cpu->trace_result_p))
4977 current_cpu->trace_stream << "gr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
4978 current_cpu->h_gr_set (((UINT) 1), opval);
4982 tmp_nvalue = UDIVSI (tmp_value, current_cpu->h_gr_get (((UINT) 2)));
4984 SI opval = ORSI (ANDSI (current_cpu->h_gr_get (((UINT) 14)), 65436), ORBI (ORBI (EQHI (ANDHI (tmp_nvalue, 255), 0), SLLHI (EQHI (tmp_nvalue, 0), 1)), ORHI (SLLHI (current_cpu->parity (tmp_nvalue), 5), SLLHI (LTQI (SRLHI (tmp_nvalue, MULSI (1, 8)), 0), 6))));
4985 if (UNLIKELY(current_cpu->trace_result_p))
4986 current_cpu->trace_stream << "gr" << '[' << ((UINT) 14) << ']' << ":=0x" << hex << opval << dec << " ";
4987 current_cpu->h_gr_set (((UINT) 14), opval);
4990 SI opval = tmp_nvalue;
4991 if (UNLIKELY(current_cpu->trace_result_p))
4992 current_cpu->trace_stream << "gr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
4993 current_cpu->h_gr_set (((UINT) 0), opval);
4998 current_cpu->done_insn (npc, status);
5003 // ********** reset: reset
5006 xstormy16_sem_reset (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
5008 #define FLD(f) abuf->fields.fmt_empty.f
5009 sem_status status = SEM_STATUS_NORMAL;
5010 xstormy16_scache* abuf = sem;
5011 PCADDR pc = abuf->addr;
5012 PCADDR npc = pc + 2;
5016 current_cpu->done_insn (npc, status);
5021 // ********** nop: nop
5024 xstormy16_sem_nop (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
5026 #define FLD(f) abuf->fields.fmt_empty.f
5027 sem_status status = SEM_STATUS_NORMAL;
5028 xstormy16_scache* abuf = sem;
5029 PCADDR pc = abuf->addr;
5030 PCADDR npc = pc + 2;
5034 current_cpu->done_insn (npc, status);
5039 // ********** halt: halt
5042 xstormy16_sem_halt (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
5044 #define FLD(f) abuf->fields.fmt_empty.f
5045 sem_status status = SEM_STATUS_NORMAL;
5046 xstormy16_scache* abuf = sem;
5047 PCADDR pc = abuf->addr;
5048 PCADDR npc = pc + 2;
5050 current_cpu->do_halt ();
5052 current_cpu->done_insn (npc, status);
5057 // ********** hold: hold
5060 xstormy16_sem_hold (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
5062 #define FLD(f) abuf->fields.fmt_empty.f
5063 sem_status status = SEM_STATUS_NORMAL;
5064 xstormy16_scache* abuf = sem;
5065 PCADDR pc = abuf->addr;
5066 PCADDR npc = pc + 2;
5068 current_cpu->do_hold ();
5070 current_cpu->done_insn (npc, status);
5075 // ********** holdx: holdx
5078 xstormy16_sem_holdx (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
5080 #define FLD(f) abuf->fields.fmt_empty.f
5081 sem_status status = SEM_STATUS_NORMAL;
5082 xstormy16_scache* abuf = sem;
5083 PCADDR pc = abuf->addr;
5084 PCADDR npc = pc + 2;
5086 current_cpu->do_holdx ();
5088 current_cpu->done_insn (npc, status);
5093 // ********** brk: brk
5096 xstormy16_sem_brk (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
5098 #define FLD(f) abuf->fields.fmt_empty.f
5099 sem_status status = SEM_STATUS_NORMAL;
5100 xstormy16_scache* abuf = sem;
5101 PCADDR pc = abuf->addr;
5102 PCADDR npc = pc + 2;
5104 current_cpu->do_brk ();
5106 current_cpu->done_insn (npc, status);
5111 // ********** syscall: --unused--
5114 xstormy16_sem_syscall (xstormy16_cpu* current_cpu, xstormy16_scache* sem)
5116 #define FLD(f) abuf->fields.fmt_empty.f
5117 sem_status status = SEM_STATUS_NORMAL;
5118 xstormy16_scache* abuf = sem;
5119 PCADDR pc = abuf->addr;
5120 PCADDR npc = pc + 2;
5122 current_cpu->syscall ();
5124 current_cpu->done_insn (npc, status);