diff options
Diffstat (limited to 'src/mame/drivers/mpf1.cpp')
-rw-r--r-- | src/mame/drivers/mpf1.cpp | 42 |
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) |