mirror of
https://github.com/holub/mame
synced 2025-04-18 22:49:58 +03:00
bus/spectrum fix expansion devices chaining
This commit is contained in:
parent
e1ccaea11f
commit
fcc6f1aa7c
@ -820,12 +820,6 @@ uint8_t spectrum_gamma_device::mreq_r(offs_t offset)
|
||||
return m_rom->base()[(offset & 0x3fff) + (m_romcs ? 0x4000 : 0)];
|
||||
}
|
||||
|
||||
void spectrum_betav2_device::mreq_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (m_exp->romcs())
|
||||
m_exp->mreq_w(offset, data);
|
||||
}
|
||||
|
||||
void spectrum_betav2_device::fdc_hld_w(int state)
|
||||
{
|
||||
m_fdc->set_force_ready(state); // HLD connected to RDY pin
|
||||
|
@ -46,11 +46,15 @@ protected:
|
||||
virtual void pre_opcode_fetch(offs_t offset) override;
|
||||
virtual void pre_data_fetch(offs_t offset) override;
|
||||
virtual uint8_t mreq_r(offs_t offset) override;
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual uint8_t iorq_r(offs_t offset) override;
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void post_opcode_fetch(offs_t offset) override { m_exp->post_opcode_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override { if (m_exp->romcs()) m_exp->mreq_w(offset, data); }
|
||||
|
||||
required_memory_region m_rom;
|
||||
required_device<wd_fdc_device_base> m_fdc;
|
||||
required_device_array<floppy_connector, 4> m_floppy;
|
||||
|
@ -269,12 +269,6 @@ uint8_t spectrum_beta128_device::mreq_r(offs_t offset)
|
||||
return data;
|
||||
}
|
||||
|
||||
void spectrum_beta128_device::mreq_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (m_exp->romcs())
|
||||
m_exp->mreq_w(offset, data);
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER(spectrum_beta128_device::magic_button)
|
||||
{
|
||||
if (newval && !oldval)
|
||||
|
@ -42,11 +42,16 @@ protected:
|
||||
|
||||
virtual void pre_opcode_fetch(offs_t offset) override;
|
||||
virtual uint8_t mreq_r(offs_t offset) override;
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual uint8_t iorq_r(offs_t offset) override;
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void post_opcode_fetch(offs_t offset) override { m_exp->post_opcode_fetch(offset); };
|
||||
virtual void pre_data_fetch(offs_t offset) override { m_exp->pre_data_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override { if (m_exp->romcs()) m_exp->mreq_w(offset, data); }
|
||||
|
||||
required_memory_region m_rom;
|
||||
required_device<wd_fdc_device_base> m_fdc;
|
||||
required_device_array<floppy_connector, 4> m_floppy;
|
||||
|
@ -307,5 +307,6 @@ void spectrum_flpone_device::mreq_w(offs_t offset, uint8_t data)
|
||||
}
|
||||
}
|
||||
|
||||
m_exp->mreq_w(offset, data);
|
||||
if (m_exp->romcs())
|
||||
m_exp->mreq_w(offset, data);
|
||||
}
|
||||
|
@ -49,6 +49,13 @@ protected:
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void pre_opcode_fetch(offs_t offset) override { m_exp->pre_opcode_fetch(offset); };
|
||||
virtual void pre_data_fetch(offs_t offset) override { m_exp->pre_data_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual uint8_t iorq_r(offs_t offset) override { return m_exp->iorq_r(offset); }
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override { m_exp->iorq_w(offset, data); }
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(busy_w) { m_busy = state; };
|
||||
|
||||
required_memory_region m_rom;
|
||||
|
@ -88,32 +88,6 @@ void spectrum_fuller_device::device_start()
|
||||
// IMPLEMENTATION
|
||||
//**************************************************************************
|
||||
|
||||
READ_LINE_MEMBER(spectrum_fuller_device::romcs)
|
||||
{
|
||||
return m_exp->romcs();
|
||||
}
|
||||
|
||||
void spectrum_fuller_device::pre_opcode_fetch(offs_t offset)
|
||||
{
|
||||
m_exp->pre_opcode_fetch(offset);
|
||||
}
|
||||
|
||||
uint8_t spectrum_fuller_device::mreq_r(offs_t offset)
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
||||
if (m_exp->romcs())
|
||||
data &= m_exp->mreq_r(offset);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void spectrum_fuller_device::mreq_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (m_exp->romcs())
|
||||
m_exp->mreq_w(offset, data);
|
||||
}
|
||||
|
||||
uint8_t spectrum_fuller_device::iorq_r(offs_t offset)
|
||||
{
|
||||
uint8_t data = m_exp->iorq_r(offset);
|
||||
|
@ -37,12 +37,17 @@ protected:
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
virtual ioport_constructor device_input_ports() const override;
|
||||
|
||||
virtual void pre_opcode_fetch(offs_t offset) override;
|
||||
virtual uint8_t mreq_r(offs_t offset) override;
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual uint8_t iorq_r(offs_t offset) override;
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void pre_opcode_fetch(offs_t offset) override { m_exp->pre_opcode_fetch(offset); };
|
||||
virtual void post_opcode_fetch(offs_t offset) override { m_exp->post_opcode_fetch(offset); };
|
||||
virtual void pre_data_fetch(offs_t offset) override { m_exp->pre_data_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual uint8_t mreq_r(offs_t offset) override { return m_exp->romcs() ? m_exp->mreq_r(offset) : 0xff; }
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override { if (m_exp->romcs()) m_exp->mreq_w(offset, data); }
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override { return m_exp->romcs(); }
|
||||
|
||||
private:
|
||||
required_device<spectrum_expansion_slot_device> m_exp;
|
||||
|
@ -156,12 +156,6 @@ uint8_t spectrum_intf1_device::mreq_r(offs_t offset)
|
||||
return data;
|
||||
}
|
||||
|
||||
void spectrum_intf1_device::mreq_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (m_exp->romcs())
|
||||
m_exp->mreq_w(offset, data);
|
||||
}
|
||||
|
||||
uint8_t spectrum_intf1_device::iorq_r(offs_t offset)
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
@ -40,11 +40,15 @@ protected:
|
||||
virtual void pre_opcode_fetch(offs_t offset) override;
|
||||
virtual void post_opcode_fetch(offs_t offset) override;
|
||||
virtual uint8_t mreq_r(offs_t offset) override;
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual uint8_t iorq_r(offs_t offset) override;
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void pre_data_fetch(offs_t offset) override { m_exp->pre_data_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override { if (m_exp->romcs()) m_exp->mreq_w(offset, data); }
|
||||
|
||||
private:
|
||||
required_device<spectrum_expansion_slot_device> m_exp;
|
||||
required_device<rs232_port_device> m_rs232;
|
||||
|
@ -151,7 +151,7 @@ uint8_t spectrum_kempdisc_device::iorq_r(offs_t offset)
|
||||
switch (offset & 0xff)
|
||||
{
|
||||
case 0xe5: case 0xe7: case 0xed: case 0xef:
|
||||
data = m_fdc->read(BIT(offset, 1) | (BIT(offset, 3) << 1));
|
||||
data &= m_fdc->read(BIT(offset, 1) | (BIT(offset, 3) << 1));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -205,9 +205,3 @@ uint8_t spectrum_kempdisc_device::mreq_r(offs_t offset)
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void spectrum_kempdisc_device::mreq_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (m_exp->romcs())
|
||||
m_exp->mreq_w(offset, data);
|
||||
}
|
||||
|
@ -39,11 +39,17 @@ protected:
|
||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||
|
||||
virtual uint8_t mreq_r(offs_t offset) override;
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual uint8_t iorq_r(offs_t offset) override;
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void pre_opcode_fetch(offs_t offset) override { m_exp->pre_opcode_fetch(offset); };
|
||||
virtual void post_opcode_fetch(offs_t offset) override { m_exp->post_opcode_fetch(offset); };
|
||||
virtual void pre_data_fetch(offs_t offset) override { m_exp->pre_data_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override { if (m_exp->romcs()) m_exp->mreq_w(offset, data); }
|
||||
|
||||
required_memory_region m_rom;
|
||||
required_device<wd_fdc_device_base> m_fdc;
|
||||
required_device_array<floppy_connector, 4> m_floppy;
|
||||
|
@ -132,13 +132,11 @@ READ_LINE_MEMBER(spectrum_proceed_device::romcs)
|
||||
return m_romcs;
|
||||
}
|
||||
|
||||
uint8_t spectrum_proceed_device::mreq_r(offs_t offset)
|
||||
void spectrum_proceed_device::fetch(offs_t offset)
|
||||
{
|
||||
u8 data = 0xff;
|
||||
|
||||
switch (offset >> 8)
|
||||
{
|
||||
// always override
|
||||
// always override
|
||||
case 0x00:
|
||||
case 0x0e:
|
||||
case 0x39: case 0x3a: case 0x3b: case 0x3c:
|
||||
@ -148,7 +146,7 @@ uint8_t spectrum_proceed_device::mreq_r(offs_t offset)
|
||||
m_romcs = 1;
|
||||
offset |= 0x0400; // 1Bxx -> 1Fxx
|
||||
break;
|
||||
// override only if PIO PB7 is 0
|
||||
// override only if PIO PB7 is 0
|
||||
case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07: case 0x08: case 0x09: case 0x0a: case 0x0b: case 0x0c: case 0x0d:
|
||||
case 0x0f: case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18:
|
||||
case 0x1d: case 0x1e:
|
||||
@ -158,6 +156,11 @@ uint8_t spectrum_proceed_device::mreq_r(offs_t offset)
|
||||
default:
|
||||
m_romcs = 0;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t spectrum_proceed_device::mreq_r(offs_t offset)
|
||||
{
|
||||
u8 data = 0xff;
|
||||
|
||||
if (m_romcs)
|
||||
data = m_rom->base()[offset & 0x1fff];
|
||||
|
@ -43,6 +43,10 @@ protected:
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||
|
||||
void fetch(offs_t offset);
|
||||
|
||||
virtual void pre_opcode_fetch(offs_t offset) override { fetch(offset); };
|
||||
virtual void pre_data_fetch(offs_t offset) override { fetch(offset); };
|
||||
virtual uint8_t mreq_r(offs_t offset) override;
|
||||
virtual uint8_t iorq_r(offs_t offset) override;
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override;
|
||||
|
@ -64,32 +64,6 @@ void spectrum_melodik_device::device_start()
|
||||
// IMPLEMENTATION
|
||||
//**************************************************************************
|
||||
|
||||
READ_LINE_MEMBER(spectrum_melodik_device::romcs)
|
||||
{
|
||||
return m_exp->romcs();
|
||||
}
|
||||
|
||||
void spectrum_melodik_device::pre_opcode_fetch(offs_t offset)
|
||||
{
|
||||
m_exp->pre_opcode_fetch(offset);
|
||||
}
|
||||
|
||||
uint8_t spectrum_melodik_device::mreq_r(offs_t offset)
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
||||
if (m_exp->romcs())
|
||||
data &= m_exp->mreq_r(offset);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void spectrum_melodik_device::mreq_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (m_exp->romcs())
|
||||
m_exp->mreq_w(offset, data);
|
||||
}
|
||||
|
||||
uint8_t spectrum_melodik_device::iorq_r(offs_t offset)
|
||||
{
|
||||
uint8_t data = m_exp->iorq_r(offset);
|
||||
|
@ -36,12 +36,17 @@ protected:
|
||||
// optional information overrides
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
|
||||
virtual void pre_opcode_fetch(offs_t offset) override;
|
||||
virtual uint8_t mreq_r(offs_t offset) override;
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual uint8_t iorq_r(offs_t offset) override;
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void pre_opcode_fetch(offs_t offset) override { m_exp->pre_opcode_fetch(offset); };
|
||||
virtual void post_opcode_fetch(offs_t offset) override { m_exp->post_opcode_fetch(offset); };
|
||||
virtual void pre_data_fetch(offs_t offset) override { m_exp->pre_data_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual uint8_t mreq_r(offs_t offset) override { return m_exp->romcs() ? m_exp->mreq_r(offset) : 0xff; }
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override { if (m_exp->romcs()) m_exp->mreq_w(offset, data); }
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override { return m_exp->romcs(); }
|
||||
|
||||
private:
|
||||
required_device<spectrum_expansion_slot_device> m_exp;
|
||||
|
@ -381,11 +381,6 @@ uint8_t spectrum_mprint_device::iorq_r(offs_t offset)
|
||||
return data;
|
||||
}
|
||||
|
||||
void spectrum_mface_base_device::iorq_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_exp->iorq_w(offset, data);
|
||||
}
|
||||
|
||||
void spectrum_mface1_device::iorq_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
switch (offset & 0xff)
|
||||
|
@ -40,9 +40,15 @@ protected:
|
||||
virtual void pre_opcode_fetch(offs_t offset) override;
|
||||
virtual uint8_t mreq_r(offs_t offset) override;
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void post_opcode_fetch(offs_t offset) override { m_exp->post_opcode_fetch(offset); };
|
||||
virtual void pre_data_fetch(offs_t offset) override { m_exp->pre_data_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual uint8_t iorq_r(offs_t offset) override { return m_exp->iorq_r(offset); }
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override { m_exp->iorq_w(offset, data); }
|
||||
|
||||
required_memory_region m_rom;
|
||||
required_device<spectrum_expansion_slot_device> m_exp;
|
||||
|
||||
|
@ -190,11 +190,6 @@ uint8_t spectrum_opus_device::iorq_r(offs_t offset)
|
||||
return data;
|
||||
}
|
||||
|
||||
void spectrum_opus_device::iorq_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_exp->iorq_w(offset, data);
|
||||
}
|
||||
|
||||
uint8_t spectrum_opus_device::mreq_r(offs_t offset)
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
@ -46,9 +46,14 @@ protected:
|
||||
virtual uint8_t mreq_r(offs_t offset) override;
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual uint8_t iorq_r(offs_t offset) override;
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void pre_opcode_fetch(offs_t offset) override { m_exp->pre_opcode_fetch(offset); };
|
||||
virtual void pre_data_fetch(offs_t offset) override { m_exp->pre_data_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override { m_exp->iorq_w(offset, data); }
|
||||
|
||||
private:
|
||||
void pia_out_a(uint8_t data);
|
||||
void pia_out_b(uint8_t data);
|
||||
|
@ -365,7 +365,8 @@ void spectrum_swiftdisc_device::mreq_w(offs_t offset, uint8_t data)
|
||||
}
|
||||
}
|
||||
|
||||
m_exp->mreq_w(offset, data);
|
||||
if (m_exp->romcs())
|
||||
m_exp->mreq_w(offset, data);
|
||||
}
|
||||
|
||||
uint8_t spectrum_swiftdisc_device::iorq_r(offs_t offset)
|
||||
@ -373,7 +374,7 @@ uint8_t spectrum_swiftdisc_device::iorq_r(offs_t offset)
|
||||
uint8_t data = m_exp->iorq_r(offset);
|
||||
|
||||
if (!BIT(offset, 5))
|
||||
data = m_joy->read();
|
||||
data &= m_joy->read();
|
||||
|
||||
return data;
|
||||
}
|
||||
@ -472,7 +473,8 @@ void spectrum_swiftdisc2_device::mreq_w(offs_t offset, uint8_t data)
|
||||
}
|
||||
}
|
||||
|
||||
m_exp->mreq_w(offset, data);
|
||||
if (m_exp->romcs())
|
||||
m_exp->mreq_w(offset, data);
|
||||
}
|
||||
|
||||
uint8_t spectrum_swiftdisc2_device::iorq_r(offs_t offset)
|
||||
@ -483,7 +485,7 @@ uint8_t spectrum_swiftdisc2_device::iorq_r(offs_t offset)
|
||||
data &= control_r();
|
||||
|
||||
if (!BIT(offset, 5) && !BIT(m_control, 3))
|
||||
data = m_joy->read();
|
||||
data &= m_joy->read();
|
||||
|
||||
if (m_conf->read())
|
||||
{
|
||||
|
@ -51,6 +51,12 @@ protected:
|
||||
virtual uint8_t iorq_r(offs_t offset) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void pre_opcode_fetch(offs_t offset) override { m_exp->pre_opcode_fetch(offset); };
|
||||
virtual void pre_data_fetch(offs_t offset) override { m_exp->pre_data_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override { m_exp->iorq_w(offset, data); }
|
||||
|
||||
required_memory_region m_rom;
|
||||
required_device<wd_fdc_device_base> m_fdc;
|
||||
required_device_array<floppy_connector, 4> m_floppy;
|
||||
|
@ -241,5 +241,6 @@ void spectrum_speccydos_device::mreq_w(offs_t offset, uint8_t data)
|
||||
}
|
||||
}
|
||||
|
||||
m_exp->mreq_w(offset, data);
|
||||
if (m_exp->romcs())
|
||||
m_exp->mreq_w(offset, data);
|
||||
}
|
||||
|
@ -46,6 +46,13 @@ protected:
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void post_opcode_fetch(offs_t offset) override { m_exp->post_opcode_fetch(offset); };
|
||||
virtual void pre_data_fetch(offs_t offset) override { m_exp->pre_data_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual uint8_t iorq_r(offs_t offset) override { return m_exp->iorq_r(offset); }
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override { m_exp->iorq_w(offset, data); }
|
||||
|
||||
required_memory_region m_rom;
|
||||
required_device<wd_fdc_device_base> m_fdc;
|
||||
required_device_array<floppy_connector, 4> m_floppy;
|
||||
|
@ -82,6 +82,24 @@ void spectrum_uslot_device::pre_opcode_fetch(offs_t offset)
|
||||
m_exp2->pre_opcode_fetch(offset);
|
||||
}
|
||||
|
||||
void spectrum_uslot_device::post_opcode_fetch(offs_t offset)
|
||||
{
|
||||
m_exp1->post_opcode_fetch(offset);
|
||||
m_exp2->post_opcode_fetch(offset);
|
||||
}
|
||||
|
||||
void spectrum_uslot_device::pre_data_fetch(offs_t offset)
|
||||
{
|
||||
m_exp1->pre_data_fetch(offset);
|
||||
m_exp2->pre_data_fetch(offset);
|
||||
}
|
||||
|
||||
void spectrum_uslot_device::post_data_fetch(offs_t offset)
|
||||
{
|
||||
m_exp1->post_data_fetch(offset);
|
||||
m_exp2->post_data_fetch(offset);
|
||||
}
|
||||
|
||||
uint8_t spectrum_uslot_device::mreq_r(offs_t offset)
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
@ -37,6 +37,9 @@ protected:
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
|
||||
virtual void pre_opcode_fetch(offs_t offset) override;
|
||||
virtual void post_opcode_fetch(offs_t offset) override;
|
||||
virtual void pre_data_fetch(offs_t offset) override;
|
||||
virtual void post_data_fetch(offs_t offset) override;
|
||||
virtual uint8_t mreq_r(offs_t offset) override;
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual uint8_t iorq_r(offs_t offset) override;
|
||||
|
@ -158,12 +158,6 @@ uint8_t spectrum_wafa_device::mreq_r(offs_t offset)
|
||||
return data;
|
||||
}
|
||||
|
||||
void spectrum_wafa_device::mreq_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (m_exp->romcs())
|
||||
m_exp->mreq_w(offset, data);
|
||||
}
|
||||
|
||||
uint8_t spectrum_wafa_device::iorq_r(offs_t offset)
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
@ -42,11 +42,15 @@ protected:
|
||||
virtual void pre_opcode_fetch(offs_t offset) override;
|
||||
virtual void post_opcode_fetch(offs_t offset) override;
|
||||
virtual uint8_t mreq_r(offs_t offset) override;
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override;
|
||||
virtual uint8_t iorq_r(offs_t offset) override;
|
||||
virtual void iorq_w(offs_t offset, uint8_t data) override;
|
||||
virtual DECLARE_READ_LINE_MEMBER(romcs) override;
|
||||
|
||||
// passthru
|
||||
virtual void pre_data_fetch(offs_t offset) override { m_exp->pre_data_fetch(offset); };
|
||||
virtual void post_data_fetch(offs_t offset) override { m_exp->post_data_fetch(offset); };
|
||||
virtual void mreq_w(offs_t offset, uint8_t data) override { if (m_exp->romcs()) m_exp->mreq_w(offset, data); }
|
||||
|
||||
private:
|
||||
required_device<spectrum_expansion_slot_device> m_exp;
|
||||
required_memory_region m_rom;
|
||||
|
@ -323,12 +323,10 @@ void spectrum_state::spectrum_rom_w(offs_t offset, uint8_t data)
|
||||
|
||||
uint8_t spectrum_state::spectrum_rom_r(offs_t offset)
|
||||
{
|
||||
uint8_t data, edata;
|
||||
|
||||
edata = m_exp->mreq_r(offset);
|
||||
uint8_t data;
|
||||
|
||||
if (m_exp->romcs())
|
||||
data = edata;
|
||||
data = m_exp->mreq_r(offset);
|
||||
else
|
||||
data = memregion("maincpu")->base()[offset];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user