diff --git a/src/devices/cpu/e132xs/e132xsdrc.cpp b/src/devices/cpu/e132xs/e132xsdrc.cpp index 11ce21cb77c..5e51771e91f 100644 --- a/src/devices/cpu/e132xs/e132xsdrc.cpp +++ b/src/devices/cpu/e132xs/e132xsdrc.cpp @@ -86,10 +86,12 @@ static void cfunc_update_timer_prescale(void *param) ((hyperstone_device *)param)->update_timer_prescale(); } +/* static void cfunc_print(void *param) { ((hyperstone_device *)param)->ccfunc_print(); } +*/ /*------------------------------------------------- ccfunc_total_cycles - compute the total number diff --git a/src/devices/cpu/e132xs/e132xsdrc_ops.hxx b/src/devices/cpu/e132xs/e132xsdrc_ops.hxx index fe3ed4312cf..c70c234140e 100644 --- a/src/devices/cpu/e132xs/e132xsdrc_ops.hxx +++ b/src/devices/cpu/e132xs/e132xsdrc_ops.hxx @@ -282,22 +282,18 @@ void hyperstone_device::generate_movd(drcuml_block *block, compiler_state *compi } else { - UML_ROLAND(block, I2, DRC_SR, 7, 0x7f); - UML_ADD(block, I3, I2, src_code); + UML_ROLAND(block, I5, DRC_SR, 7, 0x7f); + UML_ADD(block, I3, I5, src_code); UML_AND(block, I4, I3, 0x3f); UML_LOAD(block, I2, (void *)m_local_regs, I4, SIZE_DWORD, SCALE_x4); - UML_ADD(block, I6, I2, srcf_code); + UML_ADD(block, I6, I5, srcf_code); UML_AND(block, I5, I6, 0x3f); UML_LOAD(block, I3, (void *)m_local_regs, I5, SIZE_DWORD, SCALE_x4); } UML_AND(block, DRC_PC, I2, ~1); - UML_MOV(block, mem(&m_drc_arg0), (uint32_t)'0'); - UML_MOV(block, mem(&m_drc_arg1), I2); - UML_CALLC(block, cfunc_print, this); - UML_AND(block, DRC_SR, I3, 0xffe3ffff); UML_ROLINS(block, DRC_SR, I2, S_SHIFT, S_MASK); @@ -1092,7 +1088,7 @@ void hyperstone_device::generate_movi(drcuml_block *block, compiler_state *compi UML_MOV(block, I5, I1); generate_set_global_register(block, compiler, desc); - UML_TEST(block, I0, 0xf0); + UML_TEST(block, op, 0xf0); UML_JMPc(block, uml::COND_NZ, done); UML_AND(block, DRC_SR, DRC_SR, ~M_MASK); generate_delay_slot_and_branch(block, compiler, desc); @@ -1855,7 +1851,7 @@ void hyperstone_device::generate_frame(drcuml_block *block, compiler_state *comp UML_LABEL(block, diff_in_range); UML_CMP(block, I0, mem(&UB)); - UML_SETc(block, uml::COND_GE, I4); + UML_SETc(block, uml::COND_AE, I4); UML_CMP(block, I3, 0); UML_JMPc(block, uml::COND_GE, done); @@ -1866,9 +1862,12 @@ void hyperstone_device::generate_frame(drcuml_block *block, compiler_state *comp UML_CALLH(block, *m_mem_write32); UML_ADD(block, I0, I0, 4); UML_ADD(block, I3, I3, 1); + UML_TEST(block, I3, ~0); UML_JMPc(block, uml::COND_NZ, push_next); + UML_MOV(block, mem(&SP), I0); + UML_TEST(block, I4, ~0); UML_EXHc(block, uml::COND_NZ, *m_exception[EXCEPTION_FRAME_ERROR], 0);