summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/mpf1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mpf1.cpp')
-rw-r--r--src/mame/drivers/mpf1.cpp42
1 files changed, 26 insertions, 16 deletions
diff --git a/src/mame/drivers/mpf1.cpp b/src/mame/drivers/mpf1.cpp
index 53911636fb6..4c83f2f6a71 100644
--- a/src/mame/drivers/mpf1.cpp
+++ b/src/mame/drivers/mpf1.cpp
@@ -64,6 +64,10 @@ static ADDRESS_MAP_START( mpf1_map, AS_PROGRAM, 8, mpf1_state )
AM_RANGE(0x1800, 0x1fff) AM_RAM
ADDRESS_MAP_END
+static ADDRESS_MAP_START( mpf1_step, AS_DECRYPTED_OPCODES, 8, mpf1_state )
+ AM_RANGE(0x0000, 0xffff) AM_READ(step_r)
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START( mpf1b_map, AS_PROGRAM, 8, mpf1_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x0fff) AM_ROM
@@ -287,6 +291,8 @@ WRITE8_MEMBER( mpf1_state::ppi_pc_w )
/* bit 6, monitor break control */
m_break = BIT(data, 6);
+ if(!m_break)
+ fprintf(stderr, "mb=%d\n", m_break);
if (m_break)
{
m_m1 = 0;
@@ -299,6 +305,22 @@ WRITE8_MEMBER( mpf1_state::ppi_pc_w )
m_cassette->output( BIT(data, 7) ? 1.0 : -1.0);
}
+READ8_MEMBER(mpf1_state::step_r)
+{
+ if (!m_break)
+ {
+ m_m1++;
+
+ if (m_m1 == 5)
+ {
+ fprintf(stderr, "yay!\n");
+ m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+ }
+ }
+
+ return m_program->read_byte(offset);
+}
+
/* Z80 Daisy Chain */
static const z80_daisy_config mpf1_daisy_chain[] =
@@ -340,6 +362,7 @@ static MACHINE_CONFIG_START( mpf1, mpf1_state )
/* basic machine hardware */
MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_3_579545MHz/2)
MCFG_CPU_PROGRAM_MAP(mpf1_map)
+ MCFG_CPU_DECRYPTED_OPCODES_MAP(mpf1_step)
MCFG_CPU_IO_MAP(mpf1_io_map)
MCFG_Z80_DAISY_CHAIN(mpf1_daisy_chain)
@@ -373,6 +396,7 @@ static MACHINE_CONFIG_START( mpf1b, mpf1_state )
/* basic machine hardware */
MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_3_579545MHz/2)
MCFG_CPU_PROGRAM_MAP(mpf1b_map)
+ MCFG_CPU_DECRYPTED_OPCODES_MAP(mpf1_step)
MCFG_CPU_IO_MAP(mpf1b_io_map)
MCFG_Z80_DAISY_CHAIN(mpf1_daisy_chain)
@@ -409,6 +433,7 @@ static MACHINE_CONFIG_START( mpf1p, mpf1_state )
/* basic machine hardware */
MCFG_CPU_ADD(Z80_TAG, Z80, 2500000)
MCFG_CPU_PROGRAM_MAP(mpf1p_map)
+ MCFG_CPU_DECRYPTED_OPCODES_MAP(mpf1_step)
MCFG_CPU_IO_MAP(mpf1p_io_map)
MCFG_Z80_DAISY_CHAIN(mpf1_daisy_chain)
@@ -461,24 +486,9 @@ ROM_END
/* System Drivers */
-DIRECT_UPDATE_MEMBER(mpf1_state::mpf1_direct_update_handler)
-{
- if (!m_break)
- {
- m_m1++;
-
- if (m_m1 == 5)
- {
- m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
- }
- }
-
- return address;
-}
-
DRIVER_INIT_MEMBER(mpf1_state,mpf1)
{
- m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&mpf1_state::mpf1_direct_update_handler, this));
+ m_program = &m_maincpu->space(AS_PROGRAM);
}
COMP( 1979, mpf1, 0, 0, mpf1, mpf1, mpf1_state, mpf1, "Multitech", "Micro Professor 1", 0)