diff options
Diffstat (limited to 'src/devices/bus/bbc/tube/tube_arm.cpp')
-rw-r--r-- | src/devices/bus/bbc/tube/tube_arm.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/devices/bus/bbc/tube/tube_arm.cpp b/src/devices/bus/bbc/tube/tube_arm.cpp index fb557357310..f550a245e6e 100644 --- a/src/devices/bus/bbc/tube/tube_arm.cpp +++ b/src/devices/bus/bbc/tube/tube_arm.cpp @@ -59,6 +59,7 @@ void bbc_tube_arm_device::device_add_mconfig(machine_config &config) TUBE(config, m_ula); m_ula->pnmi_handler().set_inputline(m_maincpu, ARM_FIRQ_LINE); m_ula->pirq_handler().set_inputline(m_maincpu, ARM_IRQ_LINE); + m_ula->prst_handler().set(FUNC(bbc_tube_arm_device::prst_w)); /* internal ram */ RAM(config, m_ram).set_default_size("4M").set_default_value(0); @@ -113,14 +114,19 @@ void bbc_tube_arm_device::device_reset() /* enable the reset vector to be fetched from ROM */ m_maincpu->space(AS_PROGRAM).install_rom(0x000000, 0x003fff, 0x3fc000, m_bootstrap->base()); - m_rom_shadow_tap = program.install_write_tap(0x0000000, 0x03fffff, "rom_shadow_w",[this](offs_t offset, u32 &data, u32 mem_mask) - { - /* delete this tap */ - m_rom_shadow_tap->remove(); - - /* install ram */ - m_maincpu->space(AS_PROGRAM).install_ram(0x0000000, 0x03fffff, m_ram->pointer()); - }); + m_rom_shadow_tap.remove(); + m_rom_shadow_tap = program.install_write_tap( + 0x0000000, 0x03fffff, + "rom_shadow_w", + [this] (offs_t offset, u32 &data, u32 mem_mask) + { + /* delete this tap */ + m_rom_shadow_tap.remove(); + + /* install ram */ + m_maincpu->space(AS_PROGRAM).install_ram(0x0000000, 0x03fffff, m_ram->pointer()); + }, + &m_rom_shadow_tap); } @@ -128,6 +134,13 @@ void bbc_tube_arm_device::device_reset() // IMPLEMENTATION //************************************************************************** +void bbc_tube_arm_device::prst_w(int state) +{ + device_reset(); + + m_maincpu->set_input_line(INPUT_LINE_RESET, state); +} + uint8_t bbc_tube_arm_device::host_r(offs_t offset) { return m_ula->host_r(offset); |