summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/minx
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/minx')
-rw-r--r--src/devices/cpu/minx/minx.cpp5
-rw-r--r--src/devices/cpu/minx/minx.h9
-rw-r--r--src/devices/cpu/minx/minxd.cpp16
-rw-r--r--src/devices/cpu/minx/minxd.h6
-rw-r--r--src/devices/cpu/minx/minxopce.h4
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;