diff options
Diffstat (limited to 'sim/h8300/p3.c')
-rw-r--r-- | sim/h8300/p3.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/sim/h8300/p3.c b/sim/h8300/p3.c new file mode 100644 index 0000000..7d4d481 --- /dev/null +++ b/sim/h8300/p3.c @@ -0,0 +1,45 @@ + movflags8: +if (dst == 0xfeedface) abort(); + n = dst & 0x80; + z = !(dst & 0xff); + v = 0; +goto next; + movflags16: +if (dst == 0xfeedface) abort(); + n = dst & 0x8000; + z = !(dst & 0xffff); + v = 0; +goto next; + aluflags8: +if (dst == 0xfeedface) abort(); + n = dst & 0x80; + z = !(dst & 0xff); + v = ((srca & 0x80) == (srcb & 0x80)) && ((srca & 0x80) != (dst & 0x80)); + c = dst & 0x100; + goto next; + aluflags16: +if (dst == 0xfeedface) abort(); + n = dst & 0x8000; + z = !(dst & 0xffff); + v = ((srca & 0x8000) == (srcb & 0x8000)) && ((srca & 0x8000) != (dst & 0x8000)); + c = dst & 0x10000; + goto next; + setflags:; +SET_CCR(tmp); +break; + logflags: + shiftflags: + v = 0; + incflags: +if (dst == 0xfeedface) abort(); + z = !(dst & 0xff); + n = dst & 0x80; +goto next; + next: ; +pc = npc; +} while (!exception); + +saved_state.cycles = cycles; +saved_state.reg[PC] = pc - mem; +saved_state.reg[CCR] = GET_CCR(); +} |