mirror of
https://github.com/holub/mame
synced 2025-05-31 01:51:46 +03:00
bus/electron: Only select ROMSEL when upper nibble is clear.
bus/electron/m2105: Use SPEECHROM device to map the speech PHROM.
This commit is contained in:
parent
1fc11b4e6f
commit
8d54e078c7
@ -274,7 +274,7 @@ void electron_elksd128_device::expbus_w(offs_t offset, uint8_t data)
|
||||
break;
|
||||
|
||||
case 0xfe:
|
||||
if (offset == 0xfe05)
|
||||
if ((offset == 0xfe05) && !(data & 0xf0))
|
||||
{
|
||||
m_romsel = data & 0x0f;
|
||||
}
|
||||
|
@ -151,7 +151,7 @@ void electron_elksd64_device::expbus_w(offs_t offset, uint8_t data)
|
||||
break;
|
||||
|
||||
case 0xfe:
|
||||
if (offset == 0xfe05)
|
||||
if ((offset == 0xfe05) && !(data & 0xf0))
|
||||
{
|
||||
m_romsel = data & 0x0f;
|
||||
}
|
||||
|
@ -49,8 +49,8 @@ ROM_START( m2105 )
|
||||
ROMX_LOAD("sk01-pc-207l-1.ic24", 0x8000, 0x4000, CRC(0850bcea) SHA1(270e7a31e69e1454cfb70ced23a50f5d97efe4d5), ROM_BIOS(2))
|
||||
ROMX_LOAD("sk02-pc-207l-1.ic24", 0xc000, 0x4000, CRC(d8b9143f) SHA1(4e132c7a6dae4caf7203139b51882706d508c449), ROM_BIOS(2))
|
||||
|
||||
ROM_REGION(0x4000, "tms6100", 0)
|
||||
ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
|
||||
ROM_REGION(0x40000, "vsm", ROMREGION_ERASE00)
|
||||
ROM_LOAD("cm62024.bin", 0x3c000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
|
||||
ROM_END
|
||||
|
||||
|
||||
@ -65,9 +65,9 @@ void electron_m2105_device::device_add_mconfig(machine_config &config)
|
||||
INPUT_MERGER_ANY_HIGH(config, "irqs").output_handler().set(DEVICE_SELF_OWNER, FUNC(electron_expansion_slot_device::irq_w));
|
||||
|
||||
MOS6522(config, m_via[0], DERIVED_CLOCK(1, 16));
|
||||
m_via[0]->readpa_handler().set("tms5220", FUNC(tms5220_device::status_r));
|
||||
m_via[0]->writepa_handler().set("tms5220", FUNC(tms5220_device::data_w));
|
||||
m_via[0]->writepb_handler().set("tms5220", FUNC(tms5220_device::combined_rsq_wsq_w)).mask(0x03);
|
||||
m_via[0]->readpa_handler().set("vsp", FUNC(tms5220_device::status_r));
|
||||
m_via[0]->writepa_handler().set("vsp", FUNC(tms5220_device::data_w));
|
||||
m_via[0]->writepb_handler().set("vsp", FUNC(tms5220_device::combined_rsq_wsq_w)).mask(0x03);
|
||||
//m_via[0]->writepb_handler().set().bit(5); SPK ENABLE
|
||||
//m_via[0]->writepb_handler().set().bit(6); SND ENABLE
|
||||
m_via[0]->cb1_handler().set(m_via[0], FUNC(via6522_device::write_pb4));
|
||||
@ -114,19 +114,15 @@ void electron_m2105_device::device_add_mconfig(machine_config &config)
|
||||
output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
|
||||
centronics.set_output_latch(latch);
|
||||
|
||||
TMS6100(config, "tms6100", 640000/4);
|
||||
SPEECHROM(config, "vsm", 0).set_reverse_bit_order(true);
|
||||
|
||||
tms5220_device &tms(TMS5220(config, "tms5220", 640000));
|
||||
tms5220_device &tms(TMS5220(config, "vsp", 640000));
|
||||
tms.set_speechrom_tag("vsm");
|
||||
tms.ready_cb().set(m_via[0], FUNC(via6522_device::write_ca1));
|
||||
tms.ready_cb().append(m_via[0], FUNC(via6522_device::write_pb2));
|
||||
tms.irq_cb().set(m_via[0], FUNC(via6522_device::write_ca2));
|
||||
tms.irq_cb().append(m_via[0], FUNC(via6522_device::write_pb3));
|
||||
tms.m0_cb().set("tms6100", FUNC(tms6100_device::m0_w));
|
||||
tms.m1_cb().set("tms6100", FUNC(tms6100_device::m1_w));
|
||||
tms.addr_cb().set("tms6100", FUNC(tms6100_device::add_w));
|
||||
tms.data_cb().set("tms6100", FUNC(tms6100_device::data_line_r));
|
||||
tms.romclk_cb().set("tms6100", FUNC(tms6100_device::clk_w));
|
||||
tms.add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
tms.add_route(ALL_OUTPUTS, "mono", 0.5);
|
||||
|
||||
SPEAKER(config, "mono").front_center();
|
||||
}
|
||||
@ -261,7 +257,7 @@ void electron_m2105_device::expbus_w(offs_t offset, uint8_t data)
|
||||
break;
|
||||
|
||||
case 0xfe:
|
||||
if (offset == 0xfe05)
|
||||
if ((offset == 0xfe05) && !(data & 0xf0))
|
||||
{
|
||||
m_romsel = data & 0x0f;
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ ROM_START( ap6 )
|
||||
|
||||
ROM_SYSTEM_BIOS(1, "ap6", "RH Plus 1 1.33")
|
||||
ROMX_LOAD("ap6v133t.rom", 0x0000, 0x4000, CRC(364591eb) SHA1(316a25aeeda0266dae510eea52324b087875740f), ROM_BIOS(1))
|
||||
ROM_END
|
||||
ROM_END
|
||||
|
||||
//-------------------------------------------------
|
||||
// INPUT_PORTS( plus1 )
|
||||
@ -108,7 +108,6 @@ void electron_plus1_device::device_add_mconfig(machine_config &config)
|
||||
m_centronics->set_output_latch(latch);
|
||||
|
||||
/* adc */
|
||||
BBC_ANALOGUE_SLOT(config, m_analogue, bbc_analogue_devices, "acornjoy");
|
||||
ADC0844(config, m_adc);
|
||||
m_adc->intr_callback().set([this](int state) { m_adc_ready = !state; });
|
||||
m_adc->ch1_callback().set([this]() { return m_analogue->ch_r(0); });
|
||||
@ -116,6 +115,8 @@ void electron_plus1_device::device_add_mconfig(machine_config &config)
|
||||
m_adc->ch3_callback().set([this]() { return m_analogue->ch_r(2); });
|
||||
m_adc->ch4_callback().set([this]() { return m_analogue->ch_r(3); });
|
||||
|
||||
BBC_ANALOGUE_SLOT(config, m_analogue, bbc_analogue_devices, "acornjoy");
|
||||
|
||||
/* cartridges */
|
||||
ELECTRON_CARTSLOT(config, m_cart_sk1, DERIVED_CLOCK(1, 1), electron_cart, nullptr);
|
||||
m_cart_sk1->irq_handler().set(m_irqs, FUNC(input_merger_device::in_w<0>));
|
||||
@ -198,7 +199,7 @@ electron_ap1_device::electron_ap1_device(const machine_config &mconfig, const ch
|
||||
{
|
||||
}
|
||||
|
||||
electron_ap6_device::electron_ap6_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock)
|
||||
electron_ap6_device::electron_ap6_device(const machine_config &mconfig, const char* tag, device_t* owner, uint32_t clock)
|
||||
: electron_plus1_device(mconfig, ELECTRON_AP6, tag, owner, clock)
|
||||
, m_rom(*this, "rom%u", 1)
|
||||
, m_links(*this, "LINKS")
|
||||
@ -403,7 +404,7 @@ void electron_plus1_device::expbus_w(offs_t offset, uint8_t data)
|
||||
break;
|
||||
|
||||
case 0xfe:
|
||||
if (offset == 0xfe05)
|
||||
if ((offset == 0xfe05) && !(data & 0xf0))
|
||||
{
|
||||
m_romsel = data & 0x0f;
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ protected:
|
||||
class electron_ap1_device : public electron_plus1_device
|
||||
{
|
||||
public:
|
||||
electron_ap1_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock);
|
||||
electron_ap1_device(const machine_config &mconfig, const char* tag, device_t* owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
// optional information overrides
|
||||
@ -73,14 +73,14 @@ protected:
|
||||
class electron_ap6_device : public electron_plus1_device
|
||||
{
|
||||
public:
|
||||
electron_ap6_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock);
|
||||
electron_ap6_device(const machine_config &mconfig, const char* tag, device_t* owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
// device_t implementation
|
||||
virtual void device_start() override;
|
||||
|
||||
// optional information overrides
|
||||
virtual void device_add_mconfig(machine_config& config) override;
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
virtual const tiny_rom_entry* device_rom_region() const override;
|
||||
virtual ioport_constructor device_input_ports() const override;
|
||||
|
||||
|
@ -208,7 +208,7 @@ void electron_plus2_device::expbus_w(offs_t offset, uint8_t data)
|
||||
break;
|
||||
|
||||
case 0xfe:
|
||||
if (offset == 0xfe05)
|
||||
if ((offset == 0xfe05) && !(data & 0xf0))
|
||||
{
|
||||
m_romsel = data & 0x0f;
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ void electron_plus3_device::expbus_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_fdc->write(offset & 0x03, data);
|
||||
}
|
||||
else if (offset == 0xfe05)
|
||||
else if ((offset == 0xfe05) && !(data & 0xf0))
|
||||
{
|
||||
m_romsel = data & 0x0f;
|
||||
}
|
||||
|
@ -104,7 +104,7 @@ uint8_t electron_pwrjoy_device::expbus_r(offs_t offset)
|
||||
|
||||
void electron_pwrjoy_device::expbus_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (offset == 0xfe05)
|
||||
if ((offset == 0xfe05) && !(data & 0xf0))
|
||||
{
|
||||
m_romsel = data & 0x0f;
|
||||
}
|
||||
|
@ -168,7 +168,7 @@ void electron_rombox_device::expbus_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_exp->expbus_w(offset, data);
|
||||
|
||||
if (offset == 0xfe05)
|
||||
if ((offset == 0xfe05) && !(data & 0xf0))
|
||||
{
|
||||
m_romsel = data & 0x0f;
|
||||
}
|
||||
|
@ -308,7 +308,7 @@ void electron_romboxp_device::expbus_w(offs_t offset, uint8_t data)
|
||||
break;
|
||||
|
||||
case 0xfe:
|
||||
if (offset == 0xfe05)
|
||||
if ((offset == 0xfe05) && !(data & 0xf0))
|
||||
{
|
||||
m_romsel = data & 0x0f;
|
||||
}
|
||||
|
@ -157,7 +157,7 @@ void electron_sidewndr_device::expbus_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_exp->expbus_w(offset, data);
|
||||
|
||||
if (offset == 0xfe05)
|
||||
if ((offset == 0xfe05) && !(data & 0xf0))
|
||||
{
|
||||
m_romsel = data & 0x0f;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user