(MESS) cbmiec: Restored some usability. (nw)

This commit is contained in:
Curt Coder 2013-08-01 10:54:25 +00:00
parent 8857107918
commit e66cf6e89b
12 changed files with 45 additions and 46 deletions

View File

@ -1498,8 +1498,7 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_DERIVED( c128dcr, ntsc )
MCFG_CBM_IEC_SLOT_ADD("iec", c128dcr_iec_devices, "c1571") // TODO c1571cr
MCFG_CBM_IEC_BUS_ADD()
MCFG_CBM_IEC_ADD("c1571") // TODO c1571cr
MCFG_CBM_IEC_BUS_SRQ_CALLBACK(WRITELINE(c128_state, iec_srq_w))
MCFG_CBM_IEC_BUS_DATA_CALLBACK(WRITELINE(c128_state, iec_data_w))
MACHINE_CONFIG_END
@ -1510,10 +1509,12 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_DERIVED( c128d81, ntsc )
MCFG_CBM_IEC_SLOT_ADD("iec", c128d81_iec_devices, "c1563")
MCFG_CBM_IEC_BUS_ADD()
MCFG_CBM_IEC_ADD(NULL)
MCFG_CBM_IEC_BUS_SRQ_CALLBACK(WRITELINE(c128_state, iec_srq_w))
MCFG_CBM_IEC_BUS_DATA_CALLBACK(WRITELINE(c128_state, iec_data_w))
MCFG_DEVICE_MODIFY("iec8")
MCFG_DEVICE_SLOT_INTERFACE(c128d81_iec_devices, "c1563", false)
MACHINE_CONFIG_END
@ -1613,8 +1614,7 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_DERIVED( c128dcrp, pal )
MCFG_CBM_IEC_SLOT_ADD("iec", c128dcr_iec_devices, "c1571") // TODO c1571cr
MCFG_CBM_IEC_BUS_ADD()
MCFG_CBM_IEC_ADD("c1571") // TODO c1571cr
MCFG_CBM_IEC_BUS_SRQ_CALLBACK(WRITELINE(c128_state, iec_srq_w))
MCFG_CBM_IEC_BUS_DATA_CALLBACK(WRITELINE(c128_state, iec_data_w))
MACHINE_CONFIG_END

View File

@ -1130,8 +1130,8 @@ static MACHINE_CONFIG_START( ntsc_sx, sx64_state )
MCFG_M6510_PORT_PULLS(0x07, 0xc0)
// devices
MCFG_DEVICE_REMOVE("iec")
MCFG_CBM_IEC_SLOT_ADD("iec", sx1541_iec_devices, "sx1541")
MCFG_DEVICE_MODIFY("iec8")
MCFG_DEVICE_SLOT_INTERFACE(sx1541_iec_devices, "sx1541", false)
MACHINE_CONFIG_END
@ -1143,7 +1143,8 @@ static MACHINE_CONFIG_START( ntsc_dx, sx64_state )
MCFG_FRAGMENT_ADD(ntsc_sx)
// devices
//MCFG_CBM_IEC_SLOT_ADD("iec", sx1541_iec_devices, "sx1541")
MCFG_DEVICE_MODIFY("iec9")
MCFG_DEVICE_SLOT_INTERFACE(sx1541_iec_devices, "sx1541", false)
MACHINE_CONFIG_END
@ -1233,8 +1234,8 @@ static MACHINE_CONFIG_START( pal_sx, sx64_state )
MCFG_M6510_PORT_PULLS(0x07, 0xc0)
// devices
MCFG_DEVICE_REMOVE("iec")
MCFG_CBM_IEC_SLOT_ADD("iec", sx1541_iec_devices, "sx1541")
MCFG_DEVICE_MODIFY("iec8")
MCFG_DEVICE_SLOT_INTERFACE(sx1541_iec_devices, "sx1541", false)
MACHINE_CONFIG_END

View File

@ -555,7 +555,7 @@ READ8_MEMBER( base_c1541_device::via0_pb_r )
data |= !m_bus->clk_r() << 2;
// serial bus address
data |= (m_address->read() & 0x03) << 5;
data |= ((m_slot->get_address() - 8) & 0x03) << 5;
// attention in
data |= !m_bus->atn_r() << 7;
@ -884,8 +884,6 @@ static MACHINE_CONFIG_FRAGMENT( c1541 )
MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1541_floppy_interface)
MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL)
MACHINE_CONFIG_END

View File

@ -319,7 +319,7 @@ READ8_MEMBER( c1571_device::via0_pb_r )
data |= !m_bus->clk_r() << 2;
// serial bus address
data |= (m_address->read() & 0x03) << 5;
data |= ((m_slot->get_address() - 8) & 0x03) << 5;
// attention in
data |= !m_bus->atn_r() << 7;
@ -753,8 +753,6 @@ static MACHINE_CONFIG_FRAGMENT( c1570 )
MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1570_floppy_interface)
//MCFG_FLOPPY_DRIVE_ADD(WD1770_TAG":0", c1570_floppies, "525ssdd", 0, c1571_device::floppy_formats)
MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL)
MACHINE_CONFIG_END
@ -788,8 +786,6 @@ static MACHINE_CONFIG_FRAGMENT( c1571 )
MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1571_floppy_interface)
//MCFG_FLOPPY_DRIVE_ADD(WD1770_TAG":0", c1571_floppies, "525dd", 0, c1571_device::floppy_formats)
MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL)
MACHINE_CONFIG_END
@ -823,8 +819,6 @@ static MACHINE_CONFIG_FRAGMENT( c1571cr )
MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1571_floppy_interface)
//MCFG_FLOPPY_DRIVE_ADD(WD1770_TAG":0", c1571_floppies, "525dd", 0, c1571_device::floppy_formats)
MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL)
MACHINE_CONFIG_END
@ -861,8 +855,6 @@ static MACHINE_CONFIG_FRAGMENT( mini_chief )
MCFG_ISA8_BUS_ADD(ISA_BUS_TAG, M6502_TAG, isabus_intf)
MCFG_ISA8_SLOT_ADD(ISA_BUS_TAG, "isa1", mini_chief_isa8_cards, "wd1002a_wx1", false)
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL)
MACHINE_CONFIG_END

View File

@ -140,7 +140,7 @@ READ8_MEMBER( c1581_device::cia_pa_r )
//data |= !m_floppy->ready_r() << 1;
// device number
data |= (m_address->read() & 0x03) << 3;
data |= ((m_slot->get_address() - 8) & 0x03) << 3;
// disk change
data |= m_floppy->dskchg_r() << 7;
@ -278,8 +278,6 @@ static MACHINE_CONFIG_FRAGMENT( c1581 )
MCFG_WD1772x_ADD(WD1772_TAG, XTAL_16MHz/2)
MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", c1581_floppies, "35dd", c1581_device::floppy_formats)
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL)
MACHINE_CONFIG_END

View File

@ -259,9 +259,18 @@ cbm_iec_slot_device::cbm_iec_slot_device(const machine_config &mconfig, const ch
void cbm_iec_slot_device::device_start()
{
m_bus = machine().device<cbm_iec_device>(CBM_IEC_TAG);
cbm_iec_device* bus = NULL;
for (device_t *device = owner(); device != NULL; device = device->owner())
{
bus = device->subdevice<cbm_iec_device>(CBM_IEC_TAG);
if (bus != NULL) break;
}
assert(bus);
device_cbm_iec_interface *dev = dynamic_cast<device_cbm_iec_interface *>(get_card_device());
if (dev) m_bus->add_device(get_card_device());
if (dev) bus->add_device(this, get_card_device());
}
@ -329,10 +338,11 @@ void cbm_iec_device::device_stop()
// add_device -
//-------------------------------------------------
void cbm_iec_device::add_device(device_t *target)
void cbm_iec_device::add_device(cbm_iec_slot_device *slot, device_t *target)
{
daisy_entry *entry = auto_alloc(machine(), daisy_entry(target));
entry->m_interface->m_slot = slot;
entry->m_interface->m_bus = this;
m_device_list.append(*entry);

View File

@ -48,9 +48,10 @@
downcast<cbm_iec_device *>(device)->set_reset_callback(DEVCB2_##_write);
#define MCFG_CBM_IEC_SLOT_ADD(_tag, _slot_intf, _def_slot) \
#define MCFG_CBM_IEC_SLOT_ADD(_tag, _address, _slot_intf, _def_slot) \
MCFG_DEVICE_ADD(_tag, CBM_IEC_SLOT, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
downcast<cbm_iec_slot_device *>(device)->set_address(_address);
@ -60,6 +61,7 @@
// ======================> cbm_iec_device
class cbm_iec_slot_device;
class device_cbm_iec_interface;
class cbm_iec_device : public device_t
@ -74,7 +76,7 @@ public:
template<class _write> void set_data_callback(_write wr) { m_write_data.set_callback(wr); }
template<class _write> void set_reset_callback(_write wr) { m_write_reset.set_callback(wr); }
void add_device(device_t *target);
void add_device(cbm_iec_slot_device *slot, device_t *target);
// reads for both host and peripherals
DECLARE_READ_LINE_MEMBER( srq_r ) { return get_signal(SRQ); }
@ -151,12 +153,14 @@ public:
// construction/destruction
cbm_iec_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
void set_address(int address) { m_address = address; }
int get_address() { return m_address; }
// device-level overrides
virtual void device_start();
private:
// configuration
cbm_iec_device *m_bus;
protected:
int m_address;
};
@ -181,7 +185,8 @@ public:
virtual void cbm_iec_data(int state) { };
virtual void cbm_iec_reset(int state) { };
cbm_iec_device *m_bus;
cbm_iec_device *m_bus;
cbm_iec_slot_device *m_slot;
};

View File

@ -110,7 +110,11 @@
#define MCFG_CBM_IEC_ADD(_default_drive) \
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, _default_drive) \
MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL) \
MCFG_CBM_IEC_SLOT_ADD("iec8", 8, cbm_iec_devices, _default_drive) \
MCFG_CBM_IEC_SLOT_ADD("iec9", 9, cbm_iec_devices, NULL) \
MCFG_CBM_IEC_SLOT_ADD("iec10", 10, cbm_iec_devices, NULL) \
MCFG_CBM_IEC_SLOT_ADD("iec11", 11, cbm_iec_devices, NULL) \
MCFG_CBM_IEC_BUS_ADD()

View File

@ -150,8 +150,6 @@ static MACHINE_CONFIG_FRAGMENT( cmd_hd )
MCFG_SCSIBUS_ADD(SCSIBUS_TAG)
MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk0", SCSIHD, SCSI_ID_0)
MCFG_SCSICB_ADD(SCSIBUS_TAG ":host")
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL)
MACHINE_CONFIG_END

View File

@ -244,8 +244,6 @@ static MACHINE_CONFIG_FRAGMENT( fd2000 )
MCFG_DP8473_ADD(DP8473V_TAG)
MCFG_FLOPPY_DRIVE_ADD(DP8473V_TAG":0", fd2000_floppies, "35hd", floppy_image_device::default_floppy_formats)//fd2000_device::floppy_formats)
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL)
MACHINE_CONFIG_END
@ -261,8 +259,6 @@ static MACHINE_CONFIG_FRAGMENT( fd4000 )
MCFG_PC8477A_ADD(PC8477AV1_TAG)
MCFG_FLOPPY_DRIVE_ADD(PC8477AV1_TAG":0", fd4000_floppies, "35ed", floppy_image_device::default_floppy_formats)//fd2000_device::floppy_formats)
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL)
MACHINE_CONFIG_END

View File

@ -186,7 +186,6 @@ static MACHINE_CONFIG_FRAGMENT( interpod )
MCFG_RIOT6532_ADD(R6532_TAG, 1000000, riot_intf)
MCFG_ACIA6850_ADD(MC6850_TAG, acia_intf)
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL)
MCFG_CBM_IEEE488_ADD(NULL)
MACHINE_CONFIG_END

View File

@ -71,8 +71,6 @@ ADDRESS_MAP_END
static MACHINE_CONFIG_FRAGMENT( serial_box )
MCFG_CPU_ADD(M6502_TAG, M65C02, XTAL_4MHz/4)
MCFG_CPU_PROGRAM_MAP(serial_box_mem)
MCFG_CBM_IEC_SLOT_ADD("iec", cbm_iec_devices, NULL)
MACHINE_CONFIG_END