mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
(MESS) cbmiec: Restored some usability. (nw)
This commit is contained in:
parent
8857107918
commit
e66cf6e89b
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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()
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user