summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/intv
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/intv')
-rw-r--r--src/devices/bus/intv/ecs.cpp55
-rw-r--r--src/devices/bus/intv/ecs.h54
-rw-r--r--src/devices/bus/intv/rom.h38
-rw-r--r--src/devices/bus/intv/slot.cpp16
-rw-r--r--src/devices/bus/intv/slot.h128
-rw-r--r--src/devices/bus/intv/voice.cpp31
-rw-r--r--src/devices/bus/intv/voice.h42
7 files changed, 182 insertions, 182 deletions
diff --git a/src/devices/bus/intv/ecs.cpp b/src/devices/bus/intv/ecs.cpp
index e1d7f9b0b98..6fd321af36b 100644
--- a/src/devices/bus/intv/ecs.cpp
+++ b/src/devices/bus/intv/ecs.cpp
@@ -94,7 +94,8 @@ void intv_ecs_device::late_subslot_setup()
//-------------------------------------------------
-MACHINE_CONFIG_START(intv_ecs_device::device_add_mconfig)
+void intv_ecs_device::device_add_mconfig(machine_config &config)
+{
SPEAKER(config, "mono_ecs").front_center();
AY8914(config, m_snd, XTAL(3'579'545)/2);
@@ -103,9 +104,9 @@ MACHINE_CONFIG_START(intv_ecs_device::device_add_mconfig)
m_snd->port_a_write_callback().set("ctrl_port", FUNC(intvecs_control_port_device::portA_w));
m_snd->add_route(ALL_OUTPUTS, "mono_ecs", 0.33);
- MCFG_INTVECS_CONTROL_PORT_ADD("ctrl_port", intvecs_control_port_devices, "keybd")
- MCFG_INTV_CARTRIDGE_ADD("subslot", intv_cart, nullptr)
-MACHINE_CONFIG_END
+ INTVECS_CONTROL_PORT(config, "ctrl_port", intvecs_control_port_devices, "keybd");
+ INTV_CART_SLOT(config, m_subslot, intv_cart, nullptr);
+}
ROM_START( ecs )
@@ -125,7 +126,7 @@ const tiny_rom_entry *intv_ecs_device::device_rom_region() const
Paged ROM handling
-------------------------------------------------*/
-READ16_MEMBER(intv_ecs_device::read_rom20)
+uint16_t intv_ecs_device::read_rom20(offs_t offset)
{
if (m_bank_base[2])
return INTV_ROM16_READ(offset + 0x2000);
@@ -133,7 +134,7 @@ READ16_MEMBER(intv_ecs_device::read_rom20)
return 0xffff;
}
-READ16_MEMBER(intv_ecs_device::read_rom70)
+uint16_t intv_ecs_device::read_rom70(offs_t offset)
{
if (m_bank_base[7])
return 0xffff;
@@ -141,21 +142,21 @@ READ16_MEMBER(intv_ecs_device::read_rom70)
return INTV_ROM16_READ(offset + 0x7000);
}
-READ16_MEMBER(intv_ecs_device::read_rome0)
+uint16_t intv_ecs_device::read_rome0(offs_t offset)
{
if (m_bank_base[14])
return INTV_ROM16_READ(offset + 0xe000);
else // if WSMLB is loaded, it shall go here, otherwise 0xffff
- return m_subslot->read_rome0(space, offset, mem_mask);
+ return m_subslot->read_rome0(offset);
}
-READ16_MEMBER(intv_ecs_device::read_romf0)
+uint16_t intv_ecs_device::read_romf0(offs_t offset)
{
// only WSMLB should come here with bank_base = 1
if (m_bank_base[15])
- return m_subslot->read_romf0(space, offset + 0x1000, mem_mask);
+ return m_subslot->read_romf0(offset + 0x1000);
else
- return m_subslot->read_romf0(space, offset, mem_mask);
+ return m_subslot->read_romf0(offset);
}
@@ -163,44 +164,40 @@ READ16_MEMBER(intv_ecs_device::read_romf0)
read_audio
-------------------------------------------------*/
-READ16_MEMBER(intv_ecs_device::read_ay)
+uint16_t intv_ecs_device::read_ay(offs_t offset)
{
- if (ACCESSING_BITS_0_7)
- return m_snd->read(space, offset, mem_mask);
- else
- return 0xffff;
+ return 0xff00 | m_snd->read(offset);
}
/*-------------------------------------------------
write_audio
-------------------------------------------------*/
-WRITE16_MEMBER(intv_ecs_device::write_ay)
+void intv_ecs_device::write_ay(offs_t offset, uint16_t data)
{
- if (ACCESSING_BITS_0_7)
- return m_snd->write(space, offset, data, mem_mask);
+ return m_snd->write(offset, data & 0x00ff);
}
-READ16_MEMBER(intv_ecs_device::read_rom80)
+uint16_t intv_ecs_device::read_rom80(offs_t offset)
{
if (m_ram88_enabled && offset >= 0x800)
- return m_subslot->read_ram(space, offset & 0x7ff, mem_mask);
+ return m_subslot->read_ram(offset & 0x7ff);
else
- return m_subslot->read_rom80(space, offset, mem_mask);
+ return m_subslot->read_rom80(offset);
}
-READ16_MEMBER(intv_ecs_device::read_romd0)
+uint16_t intv_ecs_device::read_romd0(offs_t offset)
{
if (m_ramd0_enabled && offset < 0x800)
- return m_subslot->read_ram(space, offset, mem_mask);
+ return m_subslot->read_ram(offset);
else
- return m_subslot->read_romd0(space, offset, mem_mask);
+ return m_subslot->read_romd0(offset);
}
-WRITE16_MEMBER(intv_ecs_device::write_rom20)
+void intv_ecs_device::write_rom20(offs_t offset, uint16_t data)
{
if (offset == 0xfff)
{
@@ -211,7 +208,7 @@ WRITE16_MEMBER(intv_ecs_device::write_rom20)
}
}
-WRITE16_MEMBER(intv_ecs_device::write_rom70)
+void intv_ecs_device::write_rom70(offs_t offset, uint16_t data)
{
if (offset == 0xfff)
{
@@ -222,7 +219,7 @@ WRITE16_MEMBER(intv_ecs_device::write_rom70)
}
}
-WRITE16_MEMBER(intv_ecs_device::write_rome0)
+void intv_ecs_device::write_rome0(offs_t offset, uint16_t data)
{
if (offset == 0xfff)
{
@@ -233,7 +230,7 @@ WRITE16_MEMBER(intv_ecs_device::write_rome0)
}
}
-WRITE16_MEMBER(intv_ecs_device::write_romf0)
+void intv_ecs_device::write_romf0(offs_t offset, uint16_t data)
{
if (offset == 0xfff)
{
diff --git a/src/devices/bus/intv/ecs.h b/src/devices/bus/intv/ecs.h
index 943a768fe03..68911831c0a 100644
--- a/src/devices/bus/intv/ecs.h
+++ b/src/devices/bus/intv/ecs.h
@@ -23,41 +23,41 @@ public:
// actual ECS accesses
// paged ROMs
- virtual DECLARE_READ16_MEMBER(read_rom20) override;
- virtual DECLARE_READ16_MEMBER(read_rom70) override;
- virtual DECLARE_READ16_MEMBER(read_rome0) override;
- virtual DECLARE_READ16_MEMBER(read_romf0) override;
+ virtual uint16_t read_rom20(offs_t offset) override;
+ virtual uint16_t read_rom70(offs_t offset) override;
+ virtual uint16_t read_rome0(offs_t offset) override;
+ virtual uint16_t read_romf0(offs_t offset) override;
// RAM
- virtual DECLARE_READ16_MEMBER(read_ram) override { return (int)m_ram[offset & (m_ram.size() - 1)]; }
- virtual DECLARE_WRITE16_MEMBER(write_ram) override { m_ram[offset & (m_ram.size() - 1)] = data & 0xff; }
+ virtual uint16_t read_ram(offs_t offset) override { return (int)m_ram[offset & (m_ram.size() - 1)]; }
+ virtual void write_ram(offs_t offset, uint16_t data) override { m_ram[offset & (m_ram.size() - 1)] = data & 0xff; }
// AY8914
- virtual DECLARE_READ16_MEMBER(read_ay) override;
- virtual DECLARE_WRITE16_MEMBER(write_ay) override;
+ virtual uint16_t read_ay(offs_t offset) override;
+ virtual void write_ay(offs_t offset, uint16_t data) override;
// passthru accesses
- virtual DECLARE_READ16_MEMBER(read_rom04) override { return m_subslot->read_rom04(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom40) override { return m_subslot->read_rom40(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom48) override { return m_subslot->read_rom48(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom50) override { return m_subslot->read_rom50(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom60) override { return m_subslot->read_rom60(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom80) override;
- virtual DECLARE_READ16_MEMBER(read_rom90) override { return m_subslot->read_rom90(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_roma0) override { return m_subslot->read_roma0(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_romb0) override { return m_subslot->read_romb0(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_romc0) override { return m_subslot->read_romc0(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_romd0) override;
+ virtual uint16_t read_rom04(offs_t offset) override { return m_subslot->read_rom04(offset); }
+ virtual uint16_t read_rom40(offs_t offset) override { return m_subslot->read_rom40(offset); }
+ virtual uint16_t read_rom48(offs_t offset) override { return m_subslot->read_rom48(offset); }
+ virtual uint16_t read_rom50(offs_t offset) override { return m_subslot->read_rom50(offset); }
+ virtual uint16_t read_rom60(offs_t offset) override { return m_subslot->read_rom60(offset); }
+ virtual uint16_t read_rom80(offs_t offset) override;
+ virtual uint16_t read_rom90(offs_t offset) override { return m_subslot->read_rom90(offset); }
+ virtual uint16_t read_roma0(offs_t offset) override { return m_subslot->read_roma0(offset); }
+ virtual uint16_t read_romb0(offs_t offset) override { return m_subslot->read_romb0(offset); }
+ virtual uint16_t read_romc0(offs_t offset) override { return m_subslot->read_romc0(offset); }
+ virtual uint16_t read_romd0(offs_t offset) override;
// paged ROM banking
- virtual DECLARE_WRITE16_MEMBER(write_rom20) override;
- virtual DECLARE_WRITE16_MEMBER(write_rom70) override;
- virtual DECLARE_WRITE16_MEMBER(write_rome0) override;
- virtual DECLARE_WRITE16_MEMBER(write_romf0) override;
+ virtual void write_rom20(offs_t offset, uint16_t data) override;
+ virtual void write_rom70(offs_t offset, uint16_t data) override;
+ virtual void write_rome0(offs_t offset, uint16_t data) override;
+ virtual void write_romf0(offs_t offset, uint16_t data) override;
// RAM passthru write
- virtual DECLARE_WRITE16_MEMBER(write_88) override { if (m_ram88_enabled) m_subslot->write_ram(space, offset, data, mem_mask); }
- virtual DECLARE_WRITE16_MEMBER(write_d0) override { if (m_ramd0_enabled) m_subslot->write_ram(space, offset, data, mem_mask); }
+ virtual void write_88(offs_t offset, uint16_t data) override { if (m_ram88_enabled) m_subslot->write_ram(offset, data); }
+ virtual void write_d0(offs_t offset, uint16_t data) override { if (m_ramd0_enabled) m_subslot->write_ram(offset, data); }
// IntelliVoice passthru
- virtual DECLARE_READ16_MEMBER(read_speech) override { if (m_voice_enabled) return m_subslot->read_speech(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_WRITE16_MEMBER(write_speech) override { if (m_voice_enabled) m_subslot->write_speech(space, offset, data, mem_mask); }
+ virtual uint16_t read_speech(offs_t offset) override { if (m_voice_enabled) return m_subslot->read_speech(offset); else return 0xffff; }
+ virtual void write_speech(offs_t offset, uint16_t data) override { if (m_voice_enabled) m_subslot->write_speech(offset, data); }
virtual void late_subslot_setup() override;
diff --git a/src/devices/bus/intv/rom.h b/src/devices/bus/intv/rom.h
index 7b83b2709fe..5266220e1ec 100644
--- a/src/devices/bus/intv/rom.h
+++ b/src/devices/bus/intv/rom.h
@@ -16,21 +16,21 @@ public:
intv_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// reading and writing
- virtual DECLARE_READ16_MEMBER(read_rom04) override { return INTV_ROM16_READ(offset + 0x0400); }
- virtual DECLARE_READ16_MEMBER(read_rom20) override { return INTV_ROM16_READ(offset + 0x2000); }
- virtual DECLARE_READ16_MEMBER(read_rom40) override { return INTV_ROM16_READ(offset + 0x4000); }
- virtual DECLARE_READ16_MEMBER(read_rom48) override { return INTV_ROM16_READ(offset + 0x4800); }
- virtual DECLARE_READ16_MEMBER(read_rom50) override { return INTV_ROM16_READ(offset + 0x5000); }
- virtual DECLARE_READ16_MEMBER(read_rom60) override { return INTV_ROM16_READ(offset + 0x6000); }
- virtual DECLARE_READ16_MEMBER(read_rom70) override { return INTV_ROM16_READ(offset + 0x7000); }
- virtual DECLARE_READ16_MEMBER(read_rom80) override { return INTV_ROM16_READ(offset + 0x8000); }
- virtual DECLARE_READ16_MEMBER(read_rom90) override { return INTV_ROM16_READ(offset + 0x9000); }
- virtual DECLARE_READ16_MEMBER(read_roma0) override { return INTV_ROM16_READ(offset + 0xa000); }
- virtual DECLARE_READ16_MEMBER(read_romb0) override { return INTV_ROM16_READ(offset + 0xb000); }
- virtual DECLARE_READ16_MEMBER(read_romc0) override { return INTV_ROM16_READ(offset + 0xc000); }
- virtual DECLARE_READ16_MEMBER(read_romd0) override { return INTV_ROM16_READ(offset + 0xd000); }
- virtual DECLARE_READ16_MEMBER(read_rome0) override { return INTV_ROM16_READ(offset + 0xe000); }
- virtual DECLARE_READ16_MEMBER(read_romf0) override { return INTV_ROM16_READ(offset + 0xf000); }
+ virtual uint16_t read_rom04(offs_t offset) override { return INTV_ROM16_READ(offset + 0x0400); }
+ virtual uint16_t read_rom20(offs_t offset) override { return INTV_ROM16_READ(offset + 0x2000); }
+ virtual uint16_t read_rom40(offs_t offset) override { return INTV_ROM16_READ(offset + 0x4000); }
+ virtual uint16_t read_rom48(offs_t offset) override { return INTV_ROM16_READ(offset + 0x4800); }
+ virtual uint16_t read_rom50(offs_t offset) override { return INTV_ROM16_READ(offset + 0x5000); }
+ virtual uint16_t read_rom60(offs_t offset) override { return INTV_ROM16_READ(offset + 0x6000); }
+ virtual uint16_t read_rom70(offs_t offset) override { return INTV_ROM16_READ(offset + 0x7000); }
+ virtual uint16_t read_rom80(offs_t offset) override { return INTV_ROM16_READ(offset + 0x8000); }
+ virtual uint16_t read_rom90(offs_t offset) override { return INTV_ROM16_READ(offset + 0x9000); }
+ virtual uint16_t read_roma0(offs_t offset) override { return INTV_ROM16_READ(offset + 0xa000); }
+ virtual uint16_t read_romb0(offs_t offset) override { return INTV_ROM16_READ(offset + 0xb000); }
+ virtual uint16_t read_romc0(offs_t offset) override { return INTV_ROM16_READ(offset + 0xc000); }
+ virtual uint16_t read_romd0(offs_t offset) override { return INTV_ROM16_READ(offset + 0xd000); }
+ virtual uint16_t read_rome0(offs_t offset) override { return INTV_ROM16_READ(offset + 0xe000); }
+ virtual uint16_t read_romf0(offs_t offset) override { return INTV_ROM16_READ(offset + 0xf000); }
protected:
intv_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -49,8 +49,8 @@ public:
intv_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// reading and writing
- virtual DECLARE_READ16_MEMBER(read_ram) override { return (int)m_ram[offset & (m_ram.size() - 1)]; }
- virtual DECLARE_WRITE16_MEMBER(write_ram) override { m_ram[offset & (m_ram.size() - 1)] = data & 0xff; }
+ virtual uint16_t read_ram(offs_t offset) override { return (int)m_ram[offset & (m_ram.size() - 1)]; }
+ virtual void write_ram(offs_t offset, uint16_t data) override { m_ram[offset & (m_ram.size() - 1)] = data & 0xff; }
};
// ======================> intv_gfact_device
@@ -62,8 +62,8 @@ public:
intv_gfact_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// reading and writing
- virtual DECLARE_READ16_MEMBER(read_ram) override { return (int)m_ram[offset & (m_ram.size() - 1)]; }
- virtual DECLARE_WRITE16_MEMBER(write_ram) override { m_ram[offset & (m_ram.size() - 1)] = data & 0xff; }
+ virtual uint16_t read_ram(offs_t offset) override { return (int)m_ram[offset & (m_ram.size() - 1)]; }
+ virtual void write_ram(offs_t offset, uint16_t data) override { m_ram[offset & (m_ram.size() - 1)] = data & 0xff; }
};
// ======================> intv_wsmlb_device
diff --git a/src/devices/bus/intv/slot.cpp b/src/devices/bus/intv/slot.cpp
index 0161c90b258..0c4ddae593a 100644
--- a/src/devices/bus/intv/slot.cpp
+++ b/src/devices/bus/intv/slot.cpp
@@ -488,10 +488,10 @@ std::string intv_cart_slot_device::get_default_card_software(get_default_card_so
read_ay
-------------------------------------------------*/
-READ16_MEMBER(intv_cart_slot_device::read_ay)
+uint16_t intv_cart_slot_device::read_ay(offs_t offset)
{
if (m_cart)
- return m_cart->read_ay(space, offset, mem_mask);
+ return m_cart->read_ay(offset);
else
return 0xffff;
}
@@ -500,20 +500,20 @@ READ16_MEMBER(intv_cart_slot_device::read_ay)
write_ay
-------------------------------------------------*/
-WRITE16_MEMBER(intv_cart_slot_device::write_ay)
+void intv_cart_slot_device::write_ay(offs_t offset, uint16_t data)
{
if (m_cart)
- m_cart->write_ay(space, offset, data, mem_mask);
+ m_cart->write_ay(offset, data);
}
/*-------------------------------------------------
read_speech
-------------------------------------------------*/
-READ16_MEMBER(intv_cart_slot_device::read_speech)
+uint16_t intv_cart_slot_device::read_speech(offs_t offset)
{
if (m_cart)
- return m_cart->read_speech(space, offset, mem_mask);
+ return m_cart->read_speech(offset);
else
return 0xffff;
}
@@ -522,10 +522,10 @@ READ16_MEMBER(intv_cart_slot_device::read_speech)
write_speech
-------------------------------------------------*/
-WRITE16_MEMBER(intv_cart_slot_device::write_speech)
+void intv_cart_slot_device::write_speech(offs_t offset, uint16_t data)
{
if (m_cart)
- m_cart->write_speech(space, offset, data, mem_mask);
+ m_cart->write_speech(offset, data);
}
diff --git a/src/devices/bus/intv/slot.h b/src/devices/bus/intv/slot.h
index bdec54dab76..ec79b148375 100644
--- a/src/devices/bus/intv/slot.h
+++ b/src/devices/bus/intv/slot.h
@@ -39,36 +39,36 @@ public:
virtual ~device_intv_cart_interface();
// reading and writing
- virtual DECLARE_READ16_MEMBER(read_rom04) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom20) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom40) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom48) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom50) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom60) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom70) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom80) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom90) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_roma0) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romb0) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romc0) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romd0) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rome0) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romf0) { return 0xffff; }
-
- virtual DECLARE_READ16_MEMBER(read_ram) { return 0xffff; }
- virtual DECLARE_WRITE16_MEMBER(write_ram) {}
+ virtual uint16_t read_rom04(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom20(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom40(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom48(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom50(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom60(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom70(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom80(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom90(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_roma0(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_romb0(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_romc0(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_romd0(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rome0(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_romf0(offs_t offset) { return 0xffff; }
+
+ virtual uint16_t read_ram(offs_t offset) { return 0xffff; }
+ virtual void write_ram(offs_t offset, uint16_t data) {}
// Used by IntelliVoice & ECS
- virtual DECLARE_READ16_MEMBER(read_ay) { return 0xffff; }
- virtual DECLARE_WRITE16_MEMBER(write_ay) {}
- virtual DECLARE_READ16_MEMBER(read_speech) { return 0xffff; }
- virtual DECLARE_WRITE16_MEMBER(write_speech) {}
- virtual DECLARE_WRITE16_MEMBER(write_d0) {}
- virtual DECLARE_WRITE16_MEMBER(write_88) {}
- virtual DECLARE_WRITE16_MEMBER(write_rom20) {}
- virtual DECLARE_WRITE16_MEMBER(write_rom70) {}
- virtual DECLARE_WRITE16_MEMBER(write_rome0) {}
- virtual DECLARE_WRITE16_MEMBER(write_romf0) {}
+ virtual uint16_t read_ay(offs_t offset) { return 0xffff; }
+ virtual void write_ay(offs_t offset, uint16_t data) {}
+ virtual uint16_t read_speech(offs_t offset) { return 0xffff; }
+ virtual void write_speech(offs_t offset, uint16_t data) {}
+ virtual void write_d0(offs_t offset, uint16_t data) {}
+ virtual void write_88(offs_t offset, uint16_t data) {}
+ virtual void write_rom20(offs_t offset, uint16_t data) {}
+ virtual void write_rom70(offs_t offset, uint16_t data) {}
+ virtual void write_rome0(offs_t offset, uint16_t data) {}
+ virtual void write_romf0(offs_t offset, uint16_t data) {}
void rom_alloc(uint32_t size, const char *tag);
void ram_alloc(uint32_t size);
@@ -98,7 +98,17 @@ class intv_cart_slot_device : public device_t,
{
public:
// construction/destruction
- intv_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ template <typename T>
+ intv_cart_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt)
+ : intv_cart_slot_device(mconfig, tag, owner, 0)
+ {
+ option_reset();
+ opts(*this);
+ set_default_option(dflt);
+ set_fixed(false);
+ }
+
+ intv_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
virtual ~intv_cart_slot_device();
// image-level overrides
@@ -124,40 +134,40 @@ public:
virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override;
// reading and writing
- virtual DECLARE_READ16_MEMBER(read_rom04) { if (m_cart) return m_cart->read_rom04(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom20) { if (m_cart) return m_cart->read_rom20(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom40) { if (m_cart) return m_cart->read_rom40(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom48) { if (m_cart) return m_cart->read_rom48(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom50) { if (m_cart) return m_cart->read_rom50(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom60) { if (m_cart) return m_cart->read_rom60(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom70) { if (m_cart) return m_cart->read_rom70(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom80) { if (m_cart) return m_cart->read_rom80(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom90) { if (m_cart) return m_cart->read_rom90(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_roma0) { if (m_cart) return m_cart->read_roma0(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romb0) { if (m_cart) return m_cart->read_romb0(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romc0) { if (m_cart) return m_cart->read_romc0(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romd0) { if (m_cart) return m_cart->read_romd0(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rome0) { if (m_cart) return m_cart->read_rome0(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romf0) { if (m_cart) return m_cart->read_romf0(space, offset, mem_mask); else return 0xffff; }
-
- virtual DECLARE_READ16_MEMBER(read_ay);
- virtual DECLARE_WRITE16_MEMBER(write_ay);
- virtual DECLARE_READ16_MEMBER(read_speech);
- virtual DECLARE_WRITE16_MEMBER(write_speech);
- virtual DECLARE_READ16_MEMBER(read_ram) { if (m_cart) return m_cart->read_ram(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_WRITE16_MEMBER(write_ram) { if (m_cart) m_cart->write_ram(space, offset, data, mem_mask); }
+ uint16_t read_rom04(offs_t offset) { if (m_cart) return m_cart->read_rom04(offset); else return 0xffff; }
+ uint16_t read_rom20(offs_t offset) { if (m_cart) return m_cart->read_rom20(offset); else return 0xffff; }
+ uint16_t read_rom40(offs_t offset) { if (m_cart) return m_cart->read_rom40(offset); else return 0xffff; }
+ uint16_t read_rom48(offs_t offset) { if (m_cart) return m_cart->read_rom48(offset); else return 0xffff; }
+ uint16_t read_rom50(offs_t offset) { if (m_cart) return m_cart->read_rom50(offset); else return 0xffff; }
+ uint16_t read_rom60(offs_t offset) { if (m_cart) return m_cart->read_rom60(offset); else return 0xffff; }
+ uint16_t read_rom70(offs_t offset) { if (m_cart) return m_cart->read_rom70(offset); else return 0xffff; }
+ uint16_t read_rom80(offs_t offset) { if (m_cart) return m_cart->read_rom80(offset); else return 0xffff; }
+ uint16_t read_rom90(offs_t offset) { if (m_cart) return m_cart->read_rom90(offset); else return 0xffff; }
+ uint16_t read_roma0(offs_t offset) { if (m_cart) return m_cart->read_roma0(offset); else return 0xffff; }
+ uint16_t read_romb0(offs_t offset) { if (m_cart) return m_cart->read_romb0(offset); else return 0xffff; }
+ uint16_t read_romc0(offs_t offset) { if (m_cart) return m_cart->read_romc0(offset); else return 0xffff; }
+ uint16_t read_romd0(offs_t offset) { if (m_cart) return m_cart->read_romd0(offset); else return 0xffff; }
+ uint16_t read_rome0(offs_t offset) { if (m_cart) return m_cart->read_rome0(offset); else return 0xffff; }
+ uint16_t read_romf0(offs_t offset) { if (m_cart) return m_cart->read_romf0(offset); else return 0xffff; }
+
+ uint16_t read_ay(offs_t offset);
+ void write_ay(offs_t offset, uint16_t data);
+ uint16_t read_speech(offs_t offset);
+ void write_speech(offs_t offset, uint16_t data);
+ uint16_t read_ram(offs_t offset) { if (m_cart) return m_cart->read_ram(offset); else return 0xffff; }
+ void write_ram(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_ram(offset, data); }
virtual void late_subslot_setup() { if (m_cart) return m_cart->late_subslot_setup(); }
// these RAM accessors are needed to deal with IntelliVoice and ECS mounting RAM-equipped carts
- virtual DECLARE_WRITE16_MEMBER(write_d0) { if (m_cart) m_cart->write_d0(space, offset, data, mem_mask); }
- virtual DECLARE_WRITE16_MEMBER(write_88) { if (m_cart) m_cart->write_88(space, offset, data, mem_mask); }
+ void write_d0(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_d0(offset, data); }
+ void write_88(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_88(offset, data); }
// ECS paged roms need these
- virtual DECLARE_WRITE16_MEMBER(write_rom20) { if (m_cart) m_cart->write_rom20(space, offset, data, mem_mask); }
- virtual DECLARE_WRITE16_MEMBER(write_rom70) { if (m_cart) m_cart->write_rom70(space, offset, data, mem_mask); }
- virtual DECLARE_WRITE16_MEMBER(write_rome0) { if (m_cart) m_cart->write_rome0(space, offset, data, mem_mask); }
- virtual DECLARE_WRITE16_MEMBER(write_romf0) { if (m_cart) m_cart->write_romf0(space, offset, data, mem_mask); }
+ void write_rom20(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_rom20(offset, data); }
+ void write_rom70(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_rom70(offset, data); }
+ void write_rome0(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_rome0(offset, data); }
+ void write_romf0(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_romf0(offset, data); }
protected:
// device-level overrides
@@ -179,10 +189,6 @@ DECLARE_DEVICE_TYPE(INTV_CART_SLOT, intv_cart_slot_device)
#define INTVSLOT_ROM_REGION_TAG ":cart:rom"
-#define MCFG_INTV_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
- MCFG_DEVICE_ADD(_tag, INTV_CART_SLOT, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-
void intv_cart(device_slot_interface &device);
#endif // MAME_BUS_INTV_SLOT_H
diff --git a/src/devices/bus/intv/voice.cpp b/src/devices/bus/intv/voice.cpp
index 7cc62da7856..b8b07d84d34 100644
--- a/src/devices/bus/intv/voice.cpp
+++ b/src/devices/bus/intv/voice.cpp
@@ -69,15 +69,16 @@ void intv_voice_device::late_subslot_setup()
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(intv_voice_device::device_add_mconfig)
+void intv_voice_device::device_add_mconfig(machine_config &config)
+{
SPEAKER(config, "mono_voice").front_center();
SP0256(config, m_speech, 3120000);
/* The Intellivoice uses a speaker with its own volume control so the relative volumes to use are subjective */
m_speech->add_route(ALL_OUTPUTS, "mono_voice", 1.00);
- MCFG_INTV_CARTRIDGE_ADD("subslot", intv_cart, nullptr)
-MACHINE_CONFIG_END
+ INTV_CART_SLOT(config, m_subslot, intv_cart, nullptr);
+}
ROM_START( intellivoice )
@@ -95,37 +96,33 @@ const tiny_rom_entry *intv_voice_device::device_rom_region() const
read_audio
-------------------------------------------------*/
-READ16_MEMBER(intv_voice_device::read_speech)
+uint16_t intv_voice_device::read_speech(offs_t offset)
{
- if (ACCESSING_BITS_0_7)
- return m_speech->spb640_r(offset);
- else
- return 0xff;
+ return 0xff00 | m_speech->spb640_r(offset);
}
/*-------------------------------------------------
write_audio
-------------------------------------------------*/
-WRITE16_MEMBER(intv_voice_device::write_speech)
+void intv_voice_device::write_speech(offs_t offset, uint16_t data)
{
- if (ACCESSING_BITS_0_7)
- return m_speech->spb640_w(offset, data);
+ m_speech->spb640_w(offset, data & 0x00ff);
}
-READ16_MEMBER(intv_voice_device::read_rom80)
+uint16_t intv_voice_device::read_rom80(offs_t offset)
{
if (m_ram88_enabled && offset >= 0x800)
- return m_subslot->read_ram(space, offset & 0x7ff, mem_mask);
+ return m_subslot->read_ram(offset & 0x7ff);
else
- return m_subslot->read_rom80(space, offset, mem_mask);
+ return m_subslot->read_rom80(offset);
}
-READ16_MEMBER(intv_voice_device::read_romd0)
+uint16_t intv_voice_device::read_romd0(offs_t offset)
{
if (m_ramd0_enabled && offset < 0x800)
- return m_subslot->read_ram(space, offset, mem_mask);
+ return m_subslot->read_ram(offset);
else
- return m_subslot->read_romd0(space, offset, mem_mask);
+ return m_subslot->read_romd0(offset);
}
diff --git a/src/devices/bus/intv/voice.h b/src/devices/bus/intv/voice.h
index d99b31573a3..7369058c435 100644
--- a/src/devices/bus/intv/voice.h
+++ b/src/devices/bus/intv/voice.h
@@ -18,31 +18,31 @@ public:
// reading and writing
// actual IntelliVoice access
- virtual DECLARE_READ16_MEMBER(read_speech) override;
- virtual DECLARE_WRITE16_MEMBER(write_speech) override;
+ virtual uint16_t read_speech(offs_t offset) override;
+ virtual void write_speech(offs_t offset, uint16_t data) override;
// passthru access
- virtual DECLARE_READ16_MEMBER(read_rom04) override { return m_subslot->read_rom04(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom20) override { return m_subslot->read_rom20(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom40) override { return m_subslot->read_rom40(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom48) override { return m_subslot->read_rom48(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom50) override { return m_subslot->read_rom50(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom60) override { return m_subslot->read_rom60(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom70) override { return m_subslot->read_rom70(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_rom80) override;
- virtual DECLARE_READ16_MEMBER(read_rom90) override { return m_subslot->read_rom90(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_roma0) override { return m_subslot->read_roma0(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_romb0) override { return m_subslot->read_romb0(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_romc0) override { return m_subslot->read_romc0(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_romd0) override;
- virtual DECLARE_READ16_MEMBER(read_rome0) override { return m_subslot->read_rome0(space, offset, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_romf0) override { return m_subslot->read_romf0(space, offset, mem_mask); }
+ virtual uint16_t read_rom04(offs_t offset) override { return m_subslot->read_rom04(offset); }
+ virtual uint16_t read_rom20(offs_t offset) override { return m_subslot->read_rom20(offset); }
+ virtual uint16_t read_rom40(offs_t offset) override { return m_subslot->read_rom40(offset); }
+ virtual uint16_t read_rom48(offs_t offset) override { return m_subslot->read_rom48(offset); }
+ virtual uint16_t read_rom50(offs_t offset) override { return m_subslot->read_rom50(offset); }
+ virtual uint16_t read_rom60(offs_t offset) override { return m_subslot->read_rom60(offset); }
+ virtual uint16_t read_rom70(offs_t offset) override { return m_subslot->read_rom70(offset); }
+ virtual uint16_t read_rom80(offs_t offset) override;
+ virtual uint16_t read_rom90(offs_t offset) override { return m_subslot->read_rom90(offset); }
+ virtual uint16_t read_roma0(offs_t offset) override { return m_subslot->read_roma0(offset); }
+ virtual uint16_t read_romb0(offs_t offset) override { return m_subslot->read_romb0(offset); }
+ virtual uint16_t read_romc0(offs_t offset) override { return m_subslot->read_romc0(offset); }
+ virtual uint16_t read_romd0(offs_t offset) override;
+ virtual uint16_t read_rome0(offs_t offset) override { return m_subslot->read_rome0(offset); }
+ virtual uint16_t read_romf0(offs_t offset) override { return m_subslot->read_romf0(offset); }
// RAM passthru write
- virtual DECLARE_WRITE16_MEMBER(write_88) override { if (m_ram88_enabled) m_subslot->write_ram(space, offset, data, mem_mask); }
- virtual DECLARE_WRITE16_MEMBER(write_d0) override { if (m_ramd0_enabled) m_subslot->write_ram(space, offset, data, mem_mask); }
- virtual DECLARE_READ16_MEMBER(read_ram) override { return m_subslot->read_ram(space, offset, mem_mask); }
- virtual DECLARE_WRITE16_MEMBER(write_ram) override { m_subslot->write_ram(space, offset, data, mem_mask); }
+ virtual void write_88(offs_t offset, uint16_t data) override { if (m_ram88_enabled) m_subslot->write_ram(offset, data); }
+ virtual void write_d0(offs_t offset, uint16_t data) override { if (m_ramd0_enabled) m_subslot->write_ram(offset, data); }
+ virtual uint16_t read_ram(offs_t offset) override { return m_subslot->read_ram(offset); }
+ virtual void write_ram(offs_t offset, uint16_t data) override { m_subslot->write_ram(offset, data); }
virtual void late_subslot_setup() override;