summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2017-11-09 10:48:02 -0500
committer AJR <ajrhacker@users.noreply.github.com>2017-11-09 10:48:05 -0500
commit7af583d188832fb5dbe05a567c5d86aa3db0588f (patch)
tree339895d70e821a47cffda59b3b4233263a3dff25
parent220fedf8c0ebd6c191a5f9f4d04d6d6b679b4239 (diff)
genpc, isa8: Make maincpu tag more honestly configurable (nw)
-rw-r--r--src/devices/bus/cbmiec/c1571.cpp2
-rw-r--r--src/devices/bus/isa/isa.cpp9
-rw-r--r--src/devices/bus/isa/isa.h3
-rw-r--r--src/devices/machine/genpc.cpp7
-rw-r--r--src/devices/machine/genpc.h15
5 files changed, 22 insertions, 14 deletions
diff --git a/src/devices/bus/cbmiec/c1571.cpp b/src/devices/bus/cbmiec/c1571.cpp
index adf1f3ab043..686b2028b39 100644
--- a/src/devices/bus/cbmiec/c1571.cpp
+++ b/src/devices/bus/cbmiec/c1571.cpp
@@ -737,7 +737,7 @@ MACHINE_CONFIG_MEMBER( mini_chief_device::device_add_mconfig )
MCFG_FLOPPY_DRIVE_ADD_FIXED(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats)
MCFG_DEVICE_ADD(ISA_BUS_TAG, ISA8, 0)
- MCFG_ISA8_CPU(M6502_TAG)
+ MCFG_ISA8_CPU("^" M6502_TAG)
MCFG_ISA8_SLOT_ADD(ISA_BUS_TAG, "isa1", mini_chief_isa8_cards, "wd1002a_wx1", false)
MACHINE_CONFIG_END
diff --git a/src/devices/bus/isa/isa.cpp b/src/devices/bus/isa/isa.cpp
index bb7dc721d96..29acc810fd5 100644
--- a/src/devices/bus/isa/isa.cpp
+++ b/src/devices/bus/isa/isa.cpp
@@ -103,7 +103,7 @@ DEFINE_DEVICE_TYPE(ISA8, isa8_device, "isa8", "8-bit ISA bus")
void isa8_device::static_set_cputag(device_t &device, const char *tag)
{
isa8_device &isa = downcast<isa8_device &>(device);
- isa.m_cputag = tag;
+ isa.m_maincpu.set_tag(tag);
}
void isa8_device::static_set_custom_spaces(device_t &device)
@@ -133,7 +133,7 @@ isa8_device::isa8_device(const machine_config &mconfig, device_type type, const
m_io_config("ISA 8-bit I/O", ENDIANNESS_LITTLE, 8, 16, 0, nullptr),
m_mem16_config("ISA 16-bit mem", ENDIANNESS_LITTLE, 16, 24, 0, nullptr),
m_io16_config("ISA 16-bit I/O", ENDIANNESS_LITTLE, 16, 16, 0, nullptr),
- m_maincpu(nullptr),
+ m_maincpu(*this, finder_base::DUMMY_TAG),
m_iospace(nullptr),
m_memspace(nullptr),
m_out_irq2_cb(*this),
@@ -144,7 +144,7 @@ isa8_device::isa8_device(const machine_config &mconfig, device_type type, const
m_out_irq7_cb(*this),
m_out_drq1_cb(*this),
m_out_drq2_cb(*this),
- m_out_drq3_cb(*this), m_cputag(nullptr),
+ m_out_drq3_cb(*this),
m_write_iochck(*this)
{
for(int i=0;i<8;i++)
@@ -222,8 +222,6 @@ void isa8_device::device_start()
m_out_drq2_cb.resolve_safe();
m_out_drq3_cb.resolve_safe();
- m_maincpu = subdevice<cpu_device>(m_cputag);
-
if (m_allocspaces)
{
m_iospace = &space(AS_ISA_IO);
@@ -337,7 +335,6 @@ void isa8_device::unmap_rom(offs_t start, offs_t end)
bool isa8_device::is_option_rom_space_available(offs_t start, int size)
{
- m_maincpu = machine().device<cpu_device>(m_cputag);
for(int i = 0; i < size; i += 4096) // 4KB granularity should be enough
if(m_memspace->get_read_ptr(start + i)) return false;
return true;
diff --git a/src/devices/bus/isa/isa.h b/src/devices/bus/isa/isa.h
index 32b344fdbb3..e41e5cf07ec 100644
--- a/src/devices/bus/isa/isa.h
+++ b/src/devices/bus/isa/isa.h
@@ -269,7 +269,7 @@ protected:
virtual void device_reset() override;
// internal state
- cpu_device *m_maincpu;
+ required_device<cpu_device> m_maincpu;
// address spaces
address_space *m_iospace, *m_memspace;
@@ -288,7 +288,6 @@ protected:
device_isa8_card_interface *m_dma_device[8];
bool m_dma_eop[8];
- const char *m_cputag;
bool m_nmi_enabled;
private:
diff --git a/src/devices/machine/genpc.cpp b/src/devices/machine/genpc.cpp
index 6aa7524d383..74180d23423 100644
--- a/src/devices/machine/genpc.cpp
+++ b/src/devices/machine/genpc.cpp
@@ -164,6 +164,11 @@ WRITE_LINE_MEMBER(ibm5160_mb_device::pc_speaker_set_spkrdata)
m_speaker->level_w(m_pc_spkrdata & m_pit_out2);
}
+WRITE_LINE_MEMBER(ibm5160_mb_device::pic_int_w)
+{
+ m_maincpu->set_input_line(0, state);
+}
+
/*************************************************************
*
@@ -427,7 +432,7 @@ MACHINE_CONFIG_MEMBER( ibm5160_mb_device::device_add_mconfig )
MCFG_I8237_OUT_DACK_3_CB(WRITELINE(ibm5160_mb_device, pc_dack3_w))
MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
- MCFG_PIC8259_OUT_INT_CB(INPUTLINE(":maincpu", 0))
+ MCFG_PIC8259_OUT_INT_CB(WRITELINE(ibm5160_mb_device, pic_int_w))
MCFG_DEVICE_ADD("ppi8255", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(READ8(ibm5160_mb_device, pc_ppi_porta_r))
diff --git a/src/devices/machine/genpc.h b/src/devices/machine/genpc.h
index ce5f393395e..22e53130bf1 100644
--- a/src/devices/machine/genpc.h
+++ b/src/devices/machine/genpc.h
@@ -25,7 +25,9 @@
#define MCFG_IBM5160_MOTHERBOARD_ADD(_tag, _cputag) \
MCFG_DEVICE_ADD(_tag, IBM5160_MOTHERBOARD, 0) \
- ibm5160_mb_device::static_set_cputag(*device, "^" _cputag);
+ ibm5160_mb_device::static_set_cputag(*device, "^" _cputag); \
+ isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag);
+
// ======================> ibm5160_mb_device
class ibm5160_mb_device : public device_t
{
@@ -48,6 +50,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( pc_pit8253_out1_changed );
DECLARE_WRITE_LINE_MEMBER( pc_pit8253_out2_changed );
+ DECLARE_WRITE_LINE_MEMBER( pic_int_w );
+
protected:
ibm5160_mb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
@@ -126,7 +130,8 @@ DECLARE_DEVICE_TYPE(IBM5160_MOTHERBOARD, ibm5160_mb_device)
#define MCFG_IBM5150_MOTHERBOARD_ADD(_tag, _cputag) \
MCFG_DEVICE_ADD(_tag, IBM5150_MOTHERBOARD, 0) \
- ibm5150_mb_device::static_set_cputag(*device, "^" _cputag);
+ ibm5150_mb_device::static_set_cputag(*device, "^" _cputag); \
+ isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag);
// ======================> ibm5150_mb_device
class ibm5150_mb_device : public ibm5160_mb_device
@@ -158,7 +163,8 @@ DECLARE_DEVICE_TYPE(IBM5150_MOTHERBOARD, ibm5150_mb_device)
#define MCFG_EC1841_MOTHERBOARD_ADD(_tag, _cputag) \
MCFG_DEVICE_ADD(_tag, EC1841_MOTHERBOARD, 0) \
- ec1841_mb_device::static_set_cputag(*device, "^" _cputag);
+ ec1841_mb_device::static_set_cputag(*device, "^" _cputag); \
+ isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag);
class ec1841_mb_device : public ibm5160_mb_device
{
@@ -183,7 +189,8 @@ DECLARE_DEVICE_TYPE(EC1841_MOTHERBOARD, ec1841_mb_device)
#define MCFG_PCNOPPI_MOTHERBOARD_ADD(_tag, _cputag) \
MCFG_DEVICE_ADD(_tag, PCNOPPI_MOTHERBOARD, 0) \
- pc_noppi_mb_device::static_set_cputag(*device, "^" _cputag);
+ pc_noppi_mb_device::static_set_cputag(*device, "^" _cputag); \
+ isa8_device::static_set_cputag(*device->subdevice("isa"), "^^" _cputag);
class pc_noppi_mb_device : public ibm5160_mb_device
{