mirror of
https://github.com/holub/mame
synced 2025-07-02 08:39:21 +03:00
mpf1: Remove direct update handler, makes step work [O. Galibert]
This commit is contained in:
parent
0c9888b0c3
commit
997ed71e1b
@ -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)
|
||||
|
@ -55,13 +55,13 @@ public:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
DECLARE_READ8_MEMBER( step_r );
|
||||
DECLARE_READ8_MEMBER( ppi_pa_r );
|
||||
DECLARE_WRITE8_MEMBER( ppi_pb_w );
|
||||
DECLARE_WRITE8_MEMBER( ppi_pc_w );
|
||||
DECLARE_INPUT_CHANGED_MEMBER( trigger_nmi );
|
||||
DECLARE_INPUT_CHANGED_MEMBER( trigger_irq );
|
||||
DECLARE_INPUT_CHANGED_MEMBER( trigger_res );
|
||||
DECLARE_DIRECT_UPDATE_MEMBER(mpf1_direct_update_handler);
|
||||
|
||||
int m_break;
|
||||
int m_m1;
|
||||
@ -69,6 +69,8 @@ public:
|
||||
uint8_t m_lednum;
|
||||
|
||||
emu_timer *m_led_refresh_timer;
|
||||
address_space *m_program;
|
||||
|
||||
DECLARE_DRIVER_INIT(mpf1);
|
||||
TIMER_CALLBACK_MEMBER(led_refresh);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(check_halt_callback);
|
||||
|
Loading…
Reference in New Issue
Block a user