From d5122094dd1a8db77cb3a218687c1670c3e6c9bc Mon Sep 17 00:00:00 2001 From: "Alex W. Jackson" Date: Thu, 22 May 2014 10:11:47 +0000 Subject: [PATCH] m37710: make memory helpers inline; remove more obsolete cruft (nw) --- .gitattributes | 1 + src/emu/cpu/cpu.mak | 2 + src/emu/cpu/m37710/m37710.c | 239 +--------------------------------- src/emu/cpu/m37710/m37710.h | 7 +- src/emu/cpu/m37710/m37710cm.h | 9 +- src/emu/cpu/m37710/m37710il.h | 206 +++++++++++++++++++++++++++++ src/emu/cpu/m37710/m37710o0.c | 1 + src/emu/cpu/m37710/m37710o1.c | 1 + src/emu/cpu/m37710/m37710o2.c | 1 + src/emu/cpu/m37710/m37710o3.c | 1 + src/emu/cpu/m37710/m37710op.h | 7 +- 11 files changed, 226 insertions(+), 249 deletions(-) create mode 100644 src/emu/cpu/m37710/m37710il.h diff --git a/.gitattributes b/.gitattributes index 4f27f8730ad..0493649cb58 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1770,6 +1770,7 @@ src/emu/cpu/lr35902/opc_main.h svneol=native#text/plain src/emu/cpu/m37710/m37710.c svneol=native#text/plain src/emu/cpu/m37710/m37710.h svneol=native#text/plain src/emu/cpu/m37710/m37710cm.h svneol=native#text/plain +src/emu/cpu/m37710/m37710il.h svneol=native#text/plain src/emu/cpu/m37710/m37710o0.c svneol=native#text/plain src/emu/cpu/m37710/m37710o1.c svneol=native#text/plain src/emu/cpu/m37710/m37710o2.c svneol=native#text/plain diff --git a/src/emu/cpu/cpu.mak b/src/emu/cpu/cpu.mak index be4aad6c067..a36a222c8d6 100644 --- a/src/emu/cpu/cpu.mak +++ b/src/emu/cpu/cpu.mak @@ -1205,6 +1205,8 @@ endif M37710DEPS = \ $(CPUSRC)/m37710/m37710.h \ + $(CPUSRC)/m37710/m37710cm.h \ + $(CPUSRC)/m37710/m37710il.h \ $(CPUSRC)/m37710/m37710op.h \ $(CPUSRC)/m37710/m7700ds.h diff --git a/src/emu/cpu/m37710/m37710.c b/src/emu/cpu/m37710/m37710.c index 37065bcd83c..d9baadd6779 100644 --- a/src/emu/cpu/m37710/m37710.c +++ b/src/emu/cpu/m37710/m37710.c @@ -55,6 +55,7 @@ #include "debugger.h" #include "m37710.h" #include "m37710cm.h" +#include "m37710il.h" #define M37710_DEBUG (0) // enables verbose logging for peripherals, etc. @@ -704,30 +705,6 @@ const m37710_cpu_device::execute_func m37710_cpu_device::m37710i_execute[4] = /* internal functions */ -void m37710_cpu_device::m37710i_push_8(UINT32 value) -{ - m37710_write_8(REG_S, value); - REG_S = MAKE_UINT_16(REG_S-1); -} - -void m37710_cpu_device::m37710i_push_16(UINT32 value) -{ - m37710i_push_8(value>>8); - m37710i_push_8(value&0xff); -} - -UINT32 m37710_cpu_device::m37710i_get_reg_p() -{ - return (FLAG_N&0x80) | - ((FLAG_V>>1)&0x40) | - FLAG_M | - FLAG_X | - FLAG_D | - FLAG_I | - ((!FLAG_Z)<<1) | - ((FLAG_C>>8)&1); -} - void m37710_cpu_device::m37710i_update_irqs() { int curirq, pending = LINE_IRQ; @@ -786,10 +763,8 @@ void m37710_cpu_device::m37710i_update_irqs() m_ipl = curpri; // then PB=0, PC=(vector) REG_PB = 0; - REG_PC = m37710_read_8(m37710_irq_vectors[wantedIRQ]) | - m37710_read_8(m37710_irq_vectors[wantedIRQ]+1)<<8; + REG_PC = m37710_read_16(m37710_irq_vectors[wantedIRQ]); // logerror("IRQ @ %06x\n", REG_PB | REG_PC); - m37710i_jumping(REG_PB | REG_PC); } } @@ -876,8 +851,7 @@ void m37710_cpu_device::device_reset() m37710i_set_execution_mode(EXECUTION_MODE_M0X0); /* Fetch the reset vector */ - REG_PC = m37710_read_8(0xfffe) | (m37710_read_8(0xffff)<<8); - m37710i_jumping(REG_PB | REG_PC); + REG_PC = m37710_read_16(0xfffe); } /* Execute some instructions */ @@ -894,7 +868,6 @@ void m37710_cpu_device::execute_run() void m37710_cpu_device::m37710_set_pc(unsigned val) { REG_PC = MAKE_UINT_16(val); - m37710_jumping(REG_PB | REG_PC); } /* Get the current Stack Pointer */ @@ -947,9 +920,6 @@ void m37710_cpu_device::m37710_restore_state() { // restore proper function pointers m37710i_set_execution_mode((FLAG_M>>4) | (FLAG_X>>4)); - - // make sure the memory system can keep up - m37710i_jumping(REG_PB | REG_PC); } void m37710_cpu_device::device_start() @@ -1189,184 +1159,6 @@ void m37710_cpu_device::m37710i_set_execution_mode(UINT32 mode) } -/* ======================================================================== */ -/* ================================= MEMORY =============================== */ -/* ======================================================================== */ - -UINT32 m37710_cpu_device::m37710i_read_8_normal(UINT32 address) -{ - return m37710_read_8(address); -} - -UINT32 m37710_cpu_device::m37710i_read_8_immediate(UINT32 address) -{ - return m37710_read_8_immediate(address); -} - -UINT32 m37710_cpu_device::m37710i_read_8_direct(UINT32 address) -{ - return m37710_read_8(address); -} - -void m37710_cpu_device::m37710i_write_8_normal(UINT32 address, UINT32 value) -{ - m37710_write_8(address, value); -} - -void m37710_cpu_device::m37710i_write_8_direct(UINT32 address, UINT32 value) -{ - m37710_write_8(address, value); -} - -UINT32 m37710_cpu_device::m37710i_read_16_normal(UINT32 address) -{ - if (address & 1) - return m37710_read_8(address) | m37710_read_8(address+1)<<8; - else - return m37710_read_16(address); -} - -UINT32 m37710_cpu_device::m37710i_read_16_immediate(UINT32 address) -{ - if (address & 1) - return m37710_read_8_immediate(address) | m37710_read_8_immediate(address+1)<<8; - else - return m37710_read_16_immediate(address); -} - -UINT32 m37710_cpu_device::m37710i_read_16_direct(UINT32 address) -{ - if (address & 1) - return m37710_read_8(address) | m37710_read_8((address)+1)<<8; - else - return m37710_read_16(address); -} - -void m37710_cpu_device::m37710i_write_16_normal(UINT32 address, UINT32 value) -{ - if (address & 1) - { - m37710_write_8(address, value); - m37710_write_8(address+1, value>>8); - } - else - m37710_write_16(address, value); -} - -void m37710_cpu_device::m37710i_write_16_direct(UINT32 address, UINT32 value) -{ - if (address & 1) - { - m37710_write_8(address, value); - m37710_write_8(address+1, value>>8); - } - else - m37710_write_16(address, value); -} - -UINT32 m37710_cpu_device::m37710i_read_24_normal(UINT32 address) -{ - return m37710_read_16(address) | - (m37710_read_8(address+2)<<16); -} - -UINT32 m37710_cpu_device::m37710i_read_24_immediate(UINT32 address) -{ - return m37710_read_16_immediate(address) | - (m37710_read_8_immediate(address+2)<<16); -} - -UINT32 m37710_cpu_device::m37710i_read_24_direct(UINT32 address) -{ - return m37710_read_16(address) | - (m37710_read_8(address+2)<<16); -} - - - -/* ======================================================================== */ -/* ================================= STACK ================================ */ -/* ======================================================================== */ - -UINT32 m37710_cpu_device::m37710i_pull_8() -{ - REG_S = MAKE_UINT_16(REG_S+1); - return m37710i_read_8_normal(REG_S); -} - -UINT32 m37710_cpu_device::m37710i_pull_16() -{ - UINT32 res = m37710i_pull_8(); - return res | (m37710i_pull_8() << 8); -} - -void m37710_cpu_device::m37710i_push_24(UINT32 value) -{ - m37710i_push_8(value>>16); - m37710i_push_8((value>>8)&0xff); - m37710i_push_8(value&0xff); -} - -UINT32 m37710_cpu_device::m37710i_pull_24() -{ - UINT32 res = m37710i_pull_8(); - res |= m37710i_pull_8() << 8; - return res | (m37710i_pull_8() << 16); -} - - -/* ======================================================================== */ -/* ============================ PROGRAM COUNTER =========================== */ -/* ======================================================================== */ - -void m37710_cpu_device::m37710i_jump_16(UINT32 address) -{ - REG_PC = MAKE_UINT_16(address); - m37710i_jumping(REG_PC); -} - -void m37710_cpu_device::m37710i_jump_24(UINT32 address) -{ - REG_PB = address&0xff0000; - REG_PC = MAKE_UINT_16(address); - m37710i_jumping(REG_PC); -} - -void m37710_cpu_device::m37710i_branch_8(UINT32 offset) -{ - REG_PC = MAKE_UINT_16(REG_PC + MAKE_INT_8(offset)); - m37710i_branching(REG_PC); -} - -void m37710_cpu_device::m37710i_branch_16(UINT32 offset) -{ - REG_PC = MAKE_UINT_16(REG_PC + offset); - m37710i_branching(REG_PC); -} - - -/* ======================================================================== */ -/* ============================ STATUS REGISTER =========================== */ -/* ======================================================================== */ - -void m37710_cpu_device::m37710i_set_flag_i(UINT32 value) -{ - value &= FLAGPOS_I; - if(!FLAG_I || value) - { - FLAG_I = value; - return; - } - FLAG_I = value; -} - - -void m37710_cpu_device::m37710i_set_reg_ipl(UINT32 value) -{ - m_ipl = value & 7; -} - - /* ======================================================================== */ /* =============================== INTERRUPTS ============================= */ /* ======================================================================== */ @@ -1378,33 +1170,12 @@ void m37710_cpu_device::m37710i_interrupt_software(UINT32 vector) m37710i_push_16(REG_PC); m37710i_push_8(m_ipl); m37710i_push_8(m37710i_get_reg_p()); - m37710i_set_flag_i(IFLAG_SET); + FLAG_I = IFLAG_SET; REG_PB = 0; - m37710i_jump_16(m37710i_read_16_normal(vector)); + REG_PC = m37710_read_16(vector); } -UINT32 m37710_cpu_device::EA_IMM8() {REG_PC += 1; return REG_PB | MAKE_UINT_16(REG_PC-1);} -UINT32 m37710_cpu_device::EA_IMM16() {REG_PC += 2; return REG_PB | MAKE_UINT_16(REG_PC-2);} -UINT32 m37710_cpu_device::EA_IMM24() {REG_PC += 3; return REG_PB | MAKE_UINT_16(REG_PC-3);} -UINT32 m37710_cpu_device::EA_D() {if(MAKE_UINT_8(REG_D)) CLK(1); return MAKE_UINT_16(REG_D + OPER_8_IMM());} -UINT32 m37710_cpu_device::EA_A() {return REG_DB | OPER_16_IMM();} -UINT32 m37710_cpu_device::EA_AL() {return OPER_24_IMM();} -UINT32 m37710_cpu_device::EA_DX() {return MAKE_UINT_16(REG_D + OPER_8_IMM() + REG_X);} -UINT32 m37710_cpu_device::EA_DY() {return MAKE_UINT_16(REG_D + OPER_8_IMM() + REG_Y);} -UINT32 m37710_cpu_device::EA_AX() {UINT32 tmp = EA_A(); if((tmp^(tmp+REG_X))&0xff00) CLK(1); return tmp + REG_X;} -UINT32 m37710_cpu_device::EA_ALX() {return EA_AL() + REG_X;} -UINT32 m37710_cpu_device::EA_AY() {UINT32 tmp = EA_A(); if((tmp^(tmp+REG_X))&0xff00) CLK(1); return tmp + REG_Y;} -UINT32 m37710_cpu_device::EA_DI() {return REG_DB | OPER_16_D();} -UINT32 m37710_cpu_device::EA_DLI() {return OPER_24_D();} -UINT32 m37710_cpu_device::EA_AI() {return read_16_A(OPER_16_IMM());} -UINT32 m37710_cpu_device::EA_ALI() {return OPER_24_A();} -UINT32 m37710_cpu_device::EA_DXI() {return REG_DB | OPER_16_DX();} -UINT32 m37710_cpu_device::EA_DIY() {UINT32 tmp = REG_DB | OPER_16_D(); if((tmp^(tmp+REG_X))&0xff00) CLK(1); return tmp + REG_Y;} -UINT32 m37710_cpu_device::EA_DLIY() {return OPER_24_D() + REG_Y;} -UINT32 m37710_cpu_device::EA_AXI() {return read_16_AXI(MAKE_UINT_16(OPER_16_IMM() + REG_X));} -UINT32 m37710_cpu_device::EA_S() {return MAKE_UINT_16(REG_S + OPER_8_IMM());} -UINT32 m37710_cpu_device::EA_SIY() {return MAKE_UINT_16(read_16_SIY(REG_S + OPER_8_IMM()) + REG_Y) | REG_DB;} /* ======================================================================== */ /* ============================== END OF FILE ============================= */ diff --git a/src/emu/cpu/m37710/m37710.h b/src/emu/cpu/m37710/m37710.h index 454cece8777..bcbb6a34315 100644 --- a/src/emu/cpu/m37710/m37710.h +++ b/src/emu/cpu/m37710/m37710.h @@ -238,9 +238,6 @@ private: int m37710i_execute_M0X1(int cycles); int m37710i_execute_M1X0(int cycles); int m37710i_execute_M1X1(int cycles); - void m37710i_push_8(UINT32 value); - void m37710i_push_16(UINT32 value); - UINT32 m37710i_get_reg_p(); void m37710i_update_irqs(); void m37710_set_pc(unsigned val); unsigned m37710_get_sp(); @@ -262,7 +259,9 @@ private: UINT32 m37710i_read_24_normal(UINT32 address); UINT32 m37710i_read_24_immediate(UINT32 address); UINT32 m37710i_read_24_direct(UINT32 address); + void m37710i_push_8(UINT32 value); UINT32 m37710i_pull_8(); + void m37710i_push_16(UINT32 value); UINT32 m37710i_pull_16(); void m37710i_push_24(UINT32 value); UINT32 m37710i_pull_24(); @@ -270,7 +269,7 @@ private: void m37710i_jump_24(UINT32 address); void m37710i_branch_8(UINT32 offset); void m37710i_branch_16(UINT32 offset); - void m37710i_set_flag_i(UINT32 value); + UINT32 m37710i_get_reg_p(); void m37710i_set_reg_ipl(UINT32 value); void m37710i_interrupt_software(UINT32 vector); void m37710i_set_flag_m0x0(UINT32 value); diff --git a/src/emu/cpu/m37710/m37710cm.h b/src/emu/cpu/m37710/m37710cm.h index c31b927bd26..d2718dcf129 100644 --- a/src/emu/cpu/m37710/m37710cm.h +++ b/src/emu/cpu/m37710/m37710cm.h @@ -3,9 +3,6 @@ #ifndef __M37710CM_H__ #define __M37710CM_H__ -#define m37710i_branching(A) -#define m37710i_jumping(A) - /* ======================================================================== */ /* ================================ INCLUDES ============================== */ @@ -25,11 +22,9 @@ #define m37710_read_8(addr) m_program->read_byte(addr) #define m37710_write_8(addr,data) m_program->write_byte(addr,data) #define m37710_read_8_immediate(A) m_direct->read_decrypted_byte(A, BYTE_XOR_LE(0)) -#define m37710_read_16(addr) m_program->read_word(addr) -#define m37710_write_16(addr,data) m_program->write_word(addr,data) +#define m37710_read_16(addr) m_program->read_word_unaligned(addr) +#define m37710_write_16(addr,data) m_program->write_word_unaligned(addr,data) #define m37710_read_16_immediate(A) m_direct->read_decrypted_word(A) -#define m37710_jumping(A) -#define m37710_branching(A) /* ======================================================================== */ diff --git a/src/emu/cpu/m37710/m37710il.h b/src/emu/cpu/m37710/m37710il.h new file mode 100644 index 00000000000..96c818b8429 --- /dev/null +++ b/src/emu/cpu/m37710/m37710il.h @@ -0,0 +1,206 @@ +#pragma once + +#ifndef __M37710IL_H__ +#define __M37710IL_H__ + + +/* ======================================================================== */ +/* ================================= MEMORY =============================== */ +/* ======================================================================== */ + +inline UINT32 m37710_cpu_device::m37710i_read_8_normal(UINT32 address) +{ + return m37710_read_8(address); +} + +inline UINT32 m37710_cpu_device::m37710i_read_8_immediate(UINT32 address) +{ + return m37710_read_8_immediate(address); +} + +inline UINT32 m37710_cpu_device::m37710i_read_8_direct(UINT32 address) +{ + return m37710_read_8(address); +} + +inline void m37710_cpu_device::m37710i_write_8_normal(UINT32 address, UINT32 value) +{ + m37710_write_8(address, value); +} + +inline void m37710_cpu_device::m37710i_write_8_direct(UINT32 address, UINT32 value) +{ + m37710_write_8(address, value); +} + +inline UINT32 m37710_cpu_device::m37710i_read_16_normal(UINT32 address) +{ + return m37710_read_16(address); +} + +inline UINT32 m37710_cpu_device::m37710i_read_16_immediate(UINT32 address) +{ + if (address & 1) + return m37710_read_8_immediate(address) | (m37710_read_8_immediate(address+1)<<8); + else + return m37710_read_16_immediate(address); +} + +inline UINT32 m37710_cpu_device::m37710i_read_16_direct(UINT32 address) +{ + return m37710_read_16(address); +} + +inline void m37710_cpu_device::m37710i_write_16_normal(UINT32 address, UINT32 value) +{ + m37710_write_16(address, value); +} + +inline void m37710_cpu_device::m37710i_write_16_direct(UINT32 address, UINT32 value) +{ + m37710_write_16(address, value); +} + +inline UINT32 m37710_cpu_device::m37710i_read_24_normal(UINT32 address) +{ + if (address & 1) + return m37710_read_8(address) | (m37710_read_16(address+1)<<8); + else + return m37710_read_16(address) | (m37710_read_8(address+2)<<16); +} + +inline UINT32 m37710_cpu_device::m37710i_read_24_immediate(UINT32 address) +{ + if (address & 1) + return m37710_read_8_immediate(address) | (m37710_read_16_immediate(address+1)<<8); + else + return m37710_read_16_immediate(address) | (m37710_read_8_immediate(address+2)<<16); +} + +inline UINT32 m37710_cpu_device::m37710i_read_24_direct(UINT32 address) +{ + if (address & 1) + return m37710_read_8(address) | (m37710_read_16(address+1)<<8); + else + return m37710_read_16(address) | (m37710_read_8(address+2)<<16); +} + + +/* ======================================================================== */ +/* ================================= STACK ================================ */ +/* ======================================================================== */ + +inline void m37710_cpu_device::m37710i_push_8(UINT32 value) +{ + m37710_write_8(REG_S, value); + REG_S = MAKE_UINT_16(REG_S-1); +} + +inline UINT32 m37710_cpu_device::m37710i_pull_8() +{ + REG_S = MAKE_UINT_16(REG_S+1); + return m37710_read_8(REG_S); +} + +inline void m37710_cpu_device::m37710i_push_16(UINT32 value) +{ + m37710i_push_8(value>>8); + m37710i_push_8(value); +} + +inline UINT32 m37710_cpu_device::m37710i_pull_16() +{ + UINT32 res = m37710i_pull_8(); + return res | (m37710i_pull_8() << 8); +} + +inline void m37710_cpu_device::m37710i_push_24(UINT32 value) +{ + m37710i_push_8(value>>16); + m37710i_push_8((value>>8)); + m37710i_push_8(value); +} + +inline UINT32 m37710_cpu_device::m37710i_pull_24() +{ + UINT32 res = m37710i_pull_8(); + res |= m37710i_pull_8() << 8; + return res | (m37710i_pull_8() << 16); +} + + +/* ======================================================================== */ +/* ============================ PROGRAM COUNTER =========================== */ +/* ======================================================================== */ + +inline void m37710_cpu_device::m37710i_jump_16(UINT32 address) +{ + REG_PC = MAKE_UINT_16(address); +} + +inline void m37710_cpu_device::m37710i_jump_24(UINT32 address) +{ + REG_PB = address&0xff0000; + REG_PC = MAKE_UINT_16(address); +} + +inline void m37710_cpu_device::m37710i_branch_8(UINT32 offset) +{ + REG_PC = MAKE_UINT_16(REG_PC + MAKE_INT_8(offset)); +} + +inline void m37710_cpu_device::m37710i_branch_16(UINT32 offset) +{ + REG_PC = MAKE_UINT_16(REG_PC + offset); +} + + +/* ======================================================================== */ +/* ============================ STATUS REGISTER =========================== */ +/* ======================================================================== */ + +inline UINT32 m37710_cpu_device::m37710i_get_reg_p() +{ + return (FLAG_N&0x80) | + ((FLAG_V>>1)&0x40) | + FLAG_M | + FLAG_X | + FLAG_D | + FLAG_I | + ((!FLAG_Z)<<1) | + ((FLAG_C>>8)&1); +} + +inline void m37710_cpu_device::m37710i_set_reg_ipl(UINT32 value) +{ + m_ipl = value & 7; +} + + +/* ======================================================================== */ +/* ============================= ADDRESS MODES ============================ */ +/* ======================================================================== */ + +inline UINT32 m37710_cpu_device::EA_IMM8() {REG_PC += 1; return REG_PB | MAKE_UINT_16(REG_PC-1);} +inline UINT32 m37710_cpu_device::EA_IMM16() {REG_PC += 2; return REG_PB | MAKE_UINT_16(REG_PC-2);} +inline UINT32 m37710_cpu_device::EA_IMM24() {REG_PC += 3; return REG_PB | MAKE_UINT_16(REG_PC-3);} +inline UINT32 m37710_cpu_device::EA_D() {if(MAKE_UINT_8(REG_D)) CLK(1); return MAKE_UINT_16(REG_D + OPER_8_IMM());} +inline UINT32 m37710_cpu_device::EA_A() {return REG_DB | OPER_16_IMM();} +inline UINT32 m37710_cpu_device::EA_AL() {return OPER_24_IMM();} +inline UINT32 m37710_cpu_device::EA_DX() {return MAKE_UINT_16(REG_D + OPER_8_IMM() + REG_X);} +inline UINT32 m37710_cpu_device::EA_DY() {return MAKE_UINT_16(REG_D + OPER_8_IMM() + REG_Y);} +inline UINT32 m37710_cpu_device::EA_AX() {UINT32 tmp = EA_A(); if((tmp^(tmp+REG_X))&0xff00) CLK(1); return tmp + REG_X;} +inline UINT32 m37710_cpu_device::EA_ALX() {return EA_AL() + REG_X;} +inline UINT32 m37710_cpu_device::EA_AY() {UINT32 tmp = EA_A(); if((tmp^(tmp+REG_X))&0xff00) CLK(1); return tmp + REG_Y;} +inline UINT32 m37710_cpu_device::EA_DI() {return REG_DB | OPER_16_D();} +inline UINT32 m37710_cpu_device::EA_DLI() {return OPER_24_D();} +inline UINT32 m37710_cpu_device::EA_AI() {return read_16_A(OPER_16_IMM());} +inline UINT32 m37710_cpu_device::EA_ALI() {return OPER_24_A();} +inline UINT32 m37710_cpu_device::EA_DXI() {return REG_DB | OPER_16_DX();} +inline UINT32 m37710_cpu_device::EA_DIY() {UINT32 tmp = REG_DB | OPER_16_D(); if((tmp^(tmp+REG_X))&0xff00) CLK(1); return tmp + REG_Y;} +inline UINT32 m37710_cpu_device::EA_DLIY() {return OPER_24_D() + REG_Y;} +inline UINT32 m37710_cpu_device::EA_AXI() {return read_16_AXI(MAKE_UINT_16(OPER_16_IMM() + REG_X));} +inline UINT32 m37710_cpu_device::EA_S() {return MAKE_UINT_16(REG_S + OPER_8_IMM());} +inline UINT32 m37710_cpu_device::EA_SIY() {return MAKE_UINT_16(read_16_SIY(REG_S + OPER_8_IMM()) + REG_Y) | REG_DB;} + +#endif /* __M37710IL_H__ */ diff --git a/src/emu/cpu/m37710/m37710o0.c b/src/emu/cpu/m37710/m37710o0.c index 7ba636a03c0..1c356c63a76 100644 --- a/src/emu/cpu/m37710/m37710o0.c +++ b/src/emu/cpu/m37710/m37710o0.c @@ -1,5 +1,6 @@ #include "emu.h" #include "debugger.h" #include "m37710cm.h" +#include "m37710il.h" #define EXECUTION_MODE EXECUTION_MODE_M0X0 #include "m37710op.h" diff --git a/src/emu/cpu/m37710/m37710o1.c b/src/emu/cpu/m37710/m37710o1.c index 3c1c0bfe6f7..8d464b9a402 100644 --- a/src/emu/cpu/m37710/m37710o1.c +++ b/src/emu/cpu/m37710/m37710o1.c @@ -1,5 +1,6 @@ #include "emu.h" #include "debugger.h" #include "m37710cm.h" +#include "m37710il.h" #define EXECUTION_MODE EXECUTION_MODE_M0X1 #include "m37710op.h" diff --git a/src/emu/cpu/m37710/m37710o2.c b/src/emu/cpu/m37710/m37710o2.c index 7c9c558568a..960082b5ce7 100644 --- a/src/emu/cpu/m37710/m37710o2.c +++ b/src/emu/cpu/m37710/m37710o2.c @@ -1,5 +1,6 @@ #include "emu.h" #include "debugger.h" #include "m37710cm.h" +#include "m37710il.h" #define EXECUTION_MODE EXECUTION_MODE_M1X0 #include "m37710op.h" diff --git a/src/emu/cpu/m37710/m37710o3.c b/src/emu/cpu/m37710/m37710o3.c index cd513fc1bb2..9e314924d10 100644 --- a/src/emu/cpu/m37710/m37710o3.c +++ b/src/emu/cpu/m37710/m37710o3.c @@ -1,5 +1,6 @@ #include "emu.h" #include "debugger.h" #include "m37710cm.h" +#include "m37710il.h" #define EXECUTION_MODE EXECUTION_MODE_M1X1 #include "m37710op.h" diff --git a/src/emu/cpu/m37710/m37710op.h b/src/emu/cpu/m37710/m37710op.h index fb349eea6bd..756f2aa6e0d 100644 --- a/src/emu/cpu/m37710/m37710op.h +++ b/src/emu/cpu/m37710/m37710op.h @@ -88,7 +88,7 @@ void m37710_cpu_device::m37710i_set_reg_p(UINT32 value) FLAG_Z = !(value & FLAGPOS_Z); FLAG_C = value << 8; m37710i_set_flag_mx(value); - m37710i_set_flag_i(value); + FLAG_I = value & FLAGPOS_I; } @@ -485,7 +485,7 @@ void m37710_cpu_device::m37710i_set_reg_p(UINT32 value) #undef OP_CLI #define OP_CLI() \ CLK(CLK_OP + CLK_IMPLIED); \ - m37710i_set_flag_i(IFLAG_CLEAR); \ + FLAG_I = IFLAG_CLEAR; \ m37710i_update_irqs() /* M37710 Clear oVerflow flag */ @@ -1362,7 +1362,6 @@ void m37710_cpu_device::m37710i_set_reg_p(UINT32 value) m37710i_set_reg_ipl(m37710i_pull_8()); \ m37710i_jump_16(m37710i_pull_16()); \ REG_PB = m37710i_pull_8() << 16; \ - m37710i_jumping(REG_PB | REG_PC); \ m37710i_update_irqs() /* M37710 Return from Subroutine Long */ @@ -1506,7 +1505,7 @@ void m37710_cpu_device::m37710i_set_reg_p(UINT32 value) #undef OP_SEI #define OP_SEI() \ CLK(CLK_OP + CLK_IMPLIED); \ - m37710i_set_flag_i(IFLAG_SET) + FLAG_I = IFLAG_SET /* M37710 Set Program status word */ #undef OP_SEP