diff options
Diffstat (limited to 'src/devices/cpu/minx')
-rw-r--r-- | src/devices/cpu/minx/minx.cpp | 5 | ||||
-rw-r--r-- | src/devices/cpu/minx/minx.h | 9 | ||||
-rw-r--r-- | src/devices/cpu/minx/minxd.cpp | 16 | ||||
-rw-r--r-- | src/devices/cpu/minx/minxd.h | 6 | ||||
-rw-r--r-- | src/devices/cpu/minx/minxopce.h | 4 |
5 files changed, 20 insertions, 20 deletions
diff --git a/src/devices/cpu/minx/minx.cpp b/src/devices/cpu/minx/minx.cpp index a78ee20a92c..59c47039f13 100644 --- a/src/devices/cpu/minx/minx.cpp +++ b/src/devices/cpu/minx/minx.cpp @@ -41,13 +41,13 @@ TODO: - Add support for O and C flags in NEG8 instruction - Verify MUL (CE D8) and DIV (CE D9) - Doublecheck behaviour of CMPN instructions ( CF 60 .. CF 63 ) +- DIV (CE D9) division by zero handling - is supposed to raise a EX4 exception. A real Pokemini unit will freeze. */ #include "emu.h" #include "minx.h" #include "minxd.h" -#include "debugger.h" #define FLAG_I 0x80 #define FLAG_D 0x40 @@ -205,13 +205,14 @@ void minx_cpu_device::execute_run() /* Set Interrupt Branch flag */ m_F |= 0x80; m_V = 0; - m_PC = rd16( standard_irq_callback( 0 ) << 1 ); + m_PC = rd16( standard_irq_callback( 0, m_PC ) << 1 ); m_icount -= 28; /* This cycle count is a guess */ } } if ( m_halted ) { + debugger_wait_hook(); m_icount -= insnminx_cycles_CE[0xAE]; } else diff --git a/src/devices/cpu/minx/minx.h b/src/devices/cpu/minx/minx.h index d7ecdf039a5..72ecceb9233 100644 --- a/src/devices/cpu/minx/minx.h +++ b/src/devices/cpu/minx/minx.h @@ -22,13 +22,12 @@ public: protected: // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; // device_execute_interface overrides - virtual uint32_t execute_min_cycles() const override { return 1; } - virtual uint32_t execute_max_cycles() const override { return 4; } - virtual uint32_t execute_input_lines() const override { return 1; } + virtual uint32_t execute_min_cycles() const noexcept override { return 1; } + virtual uint32_t execute_max_cycles() const noexcept override { return 4; } virtual void execute_run() override; virtual void execute_set_input(int inputnum, int state) override; diff --git a/src/devices/cpu/minx/minxd.cpp b/src/devices/cpu/minx/minxd.cpp index 413f588369f..23c10b38571 100644 --- a/src/devices/cpu/minx/minxd.cpp +++ b/src/devices/cpu/minx/minxd.cpp @@ -26,13 +26,13 @@ const char *const minx_disassembler::s_mnemonic[] = { }; const uint32_t minx_disassembler::s_flags[] = { - 0, 0, 0, 0, 0, 0, STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, - STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, - STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, STEP_OVER, + 0, 0, 0, 0, 0, 0, STEP_OVER, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, + STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, + STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, STEP_OVER | STEP_COND, 0, 0, 0, 0, 0, STEP_OVER, 0, STEP_OVER, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, 0, + STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, + STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, STEP_OUT, STEP_OUT, STEP_OUT, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -317,13 +317,13 @@ case I_16: /* 16 bit immediate */ \ break; \ case D_8: /* PC + 8 bit displacement (signed) */ \ ofs8 = opcodes.r8(pos++); \ - util::stream_format(stream, "%c$%04X", fill, pc + pos - 1 + ofs8); \ + util::stream_format(stream, "%c$%04X", fill, pos - 1 + ofs8); \ break; \ case D_16: /* PC + 16 bit displacement */ \ ea = opcodes.r8(pos++); \ ea += opcodes.r8(pos++) << 8; \ ea = ea - 1; \ - util::stream_format(stream, "%c$%04X", fill, pc + pos + ea); \ + util::stream_format(stream, "%c$%04X", fill, pos + ea); \ break; \ case S_8: /* SP + 8 bit displacement (signed) */ \ ea = opcodes.r8(pos++); \ diff --git a/src/devices/cpu/minx/minxd.h b/src/devices/cpu/minx/minxd.h index 08786c5dda8..4ab5803d1bb 100644 --- a/src/devices/cpu/minx/minxd.h +++ b/src/devices/cpu/minx/minxd.h @@ -7,8 +7,8 @@ ************************************************************/ -#ifndef MAME_CPU_MINX_MINXDASM_H -#define MAME_CPU_MINX_MINXDASM_H +#ifndef MAME_CPU_MINX_MINXD_H +#define MAME_CPU_MINX_MINXD_H #pragma once @@ -86,4 +86,4 @@ private: static const minxdasm mnemonic_cf[256]; }; -#endif +#endif // MAME_CPU_MINX_MINXD_H diff --git a/src/devices/cpu/minx/minxopce.h b/src/devices/cpu/minx/minxopce.h index 2d44decf802..f792e7898fa 100644 --- a/src/devices/cpu/minx/minxopce.h +++ b/src/devices/cpu/minx/minxopce.h @@ -367,7 +367,7 @@ void minx_cpu_device::execute_one_ce() break; case 0xAE: { /* HALT */ m_halted = 1; } break; - case 0xAF: { } + case 0xAF: { /* STOP */ } break; case 0xB0: { m_BA = ( m_BA & 0x00FF ) | ( AND8( ( m_BA >> 8 ), rdop() ) << 8 ); } @@ -454,7 +454,7 @@ void minx_cpu_device::execute_one_ce() break; case 0xD8: { m_HL = ( m_HL & 0x00FF ) * ( m_BA & 0x00FF ); } break; - case 0xD9: { int d = m_HL / ( m_BA & 0x00FF ); m_HL = ( ( m_HL - ( ( m_BA & 0x00FF ) * d ) ) << 8 ) | d; } + case 0xD9: { if ( m_BA & 0x00FF ) { int d = m_HL / ( m_BA & 0x00FF ); m_HL = ( ( m_HL - ( ( m_BA & 0x00FF ) * d ) ) << 8 ) | d; } } break; case 0xDA: { /* illegal operation? */ } break; |