summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/bbc/tube/tube_32016.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/bbc/tube/tube_32016.cpp')
-rw-r--r--src/devices/bus/bbc/tube/tube_32016.cpp38
1 files changed, 26 insertions, 12 deletions
diff --git a/src/devices/bus/bbc/tube/tube_32016.cpp b/src/devices/bus/bbc/tube/tube_32016.cpp
index 8d40ec56eb8..01019302aec 100644
--- a/src/devices/bus/bbc/tube/tube_32016.cpp
+++ b/src/devices/bus/bbc/tube/tube_32016.cpp
@@ -21,6 +21,7 @@
#include "emu.h"
#include "tube_32016.h"
+
#include "softlist_dev.h"
@@ -135,6 +136,7 @@ void bbc_tube_32016_device::device_add_mconfig(machine_config &config)
TUBE(config, m_ula);
m_ula->pnmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
m_ula->pirq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ m_ula->prst_handler().set(FUNC(bbc_tube_32016_device::prst_w));
RAM(config, m_ram).set_default_size("1M").set_extra_options("256K").set_default_value(0);
@@ -242,18 +244,23 @@ void bbc_tube_32016_device::device_reset()
// address map during booting
program.install_rom(0x000000, 0x007fff, 0xff8000, m_rom->base());
- m_rom_shadow_tap = program.install_write_tap(0x000000, 0xffffff, "rom_shadow_w",[this](offs_t offset, u16 &data, u16 mem_mask)
- {
- // delete this tap
- m_rom_shadow_tap->remove();
-
- // address map after booting
- m_maincpu->space(AS_PROGRAM).nop_readwrite(0x000000, 0xffffff);
- m_maincpu->space(AS_PROGRAM).install_ram(0x000000, m_ram->mask(), 0x7fffff ^ m_ram->mask(), m_ram->pointer());
- m_maincpu->space(AS_PROGRAM).install_rom(0xf00000, 0xf07fff, 0x038000, m_rom->base());
- m_maincpu->space(AS_PROGRAM).install_read_port(0xf90000, 0xf90001, 0x00fffe, "CONFIG");
- m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfffff0, 0xffffff, read8sm_delegate(*m_ula, FUNC(tube_device::parasite_r)), write8sm_delegate(*m_ula, FUNC(tube_device::parasite_w)), 0xff);
- });
+ m_rom_shadow_tap.remove();
+ m_rom_shadow_tap = program.install_write_tap(
+ 0x000000, 0xffffff,
+ "rom_shadow_w",
+ [this] (offs_t offset, u16 &data, u16 mem_mask)
+ {
+ // delete this tap
+ m_rom_shadow_tap.remove();
+
+ // address map after booting
+ m_maincpu->space(AS_PROGRAM).nop_readwrite(0x000000, 0xffffff);
+ m_maincpu->space(AS_PROGRAM).install_ram(0x000000, m_ram->mask(), 0x7fffff ^ m_ram->mask(), m_ram->pointer());
+ m_maincpu->space(AS_PROGRAM).install_rom(0xf00000, 0xf07fff, 0x038000, m_rom->base());
+ m_maincpu->space(AS_PROGRAM).install_read_port(0xf90000, 0xf90001, 0x00fffe, "CONFIG");
+ m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfffff0, 0xffffff, read8sm_delegate(*m_ula, FUNC(tube_device::parasite_r)), write8sm_delegate(*m_ula, FUNC(tube_device::parasite_w)), 0xff);
+ },
+ &m_rom_shadow_tap);
}
@@ -261,6 +268,13 @@ void bbc_tube_32016_device::device_reset()
// IMPLEMENTATION
//**************************************************************************
+void bbc_tube_32016_device::prst_w(int state)
+{
+ device_reset();
+
+ m_maincpu->set_input_line(INPUT_LINE_RESET, state);
+}
+
uint8_t bbc_tube_32016_device::host_r(offs_t offset)
{
return m_ula->host_r(offset);