summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/cbmiec
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/cbmiec')
-rw-r--r--src/devices/bus/cbmiec/c1526.cpp22
-rw-r--r--src/devices/bus/cbmiec/c1541.cpp18
-rw-r--r--src/devices/bus/cbmiec/c1571.cpp11
-rw-r--r--src/devices/bus/cbmiec/c1581.cpp31
-rw-r--r--src/devices/bus/cbmiec/cbmiec.h45
-rw-r--r--src/devices/bus/cbmiec/interpod.cpp17
-rw-r--r--src/devices/bus/cbmiec/interpod.h10
-rw-r--r--src/devices/bus/cbmiec/serialbox.cpp9
-rw-r--r--src/devices/bus/cbmiec/vic1515.cpp11
-rw-r--r--src/devices/bus/cbmiec/vic1520.cpp9
10 files changed, 115 insertions, 68 deletions
diff --git a/src/devices/bus/cbmiec/c1526.cpp b/src/devices/bus/cbmiec/c1526.cpp
index 7123782d42c..9a5fcc4dbb3 100644
--- a/src/devices/bus/cbmiec/c1526.cpp
+++ b/src/devices/bus/cbmiec/c1526.cpp
@@ -23,8 +23,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(C1526, c1526_device, "c1526", "Commodore 1526/MPS802 Printer")
-DEFINE_DEVICE_TYPE(C4023, c4023_device, "c4023", "Commodore 4023 Printer")
+DEFINE_DEVICE_TYPE(C1526, c1526_device, "c1526", "MPS802/C1526 Printer")
+DEFINE_DEVICE_TYPE(C4023, c4023_device, "c4023", "C4023 Printer")
//-------------------------------------------------
@@ -88,22 +88,20 @@ void c1526_device_base::c1526_mem(address_map &map)
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void c1526_device::device_add_mconfig(machine_config &config)
-{
- m6504_device &cpu(M6504(config, M6504_TAG, XTAL(4'000'000)/4));
- cpu.set_addrmap(AS_PROGRAM, &c1526_device::c1526_mem);
-}
+MACHINE_CONFIG_START(c1526_device::device_add_mconfig)
+ MCFG_DEVICE_ADD(M6504_TAG, M6504, XTAL(4'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(c1526_mem)
+MACHINE_CONFIG_END
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void c4023_device::device_add_mconfig(machine_config &config)
-{
- m6504_device &cpu(M6504(config, M6504_TAG, XTAL(4'000'000)/4));
- cpu.set_addrmap(AS_PROGRAM, &c4023_device::c1526_mem);
-}
+MACHINE_CONFIG_START(c4023_device::device_add_mconfig)
+ MCFG_DEVICE_ADD(M6504_TAG, M6504, XTAL(4'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(c1526_mem)
+MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/devices/bus/cbmiec/c1541.cpp b/src/devices/bus/cbmiec/c1541.cpp
index 30b5eb8f255..17f2ff59084 100644
--- a/src/devices/bus/cbmiec/c1541.cpp
+++ b/src/devices/bus/cbmiec/c1541.cpp
@@ -161,17 +161,17 @@
// DEVICE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(C1540, c1540_device, "c1540", "Commodore 1540 Disk Drive")
-DEFINE_DEVICE_TYPE(C1541, c1541_device, "c1541", "Commodore 1541 Disk Drive")
-DEFINE_DEVICE_TYPE(C1541C, c1541c_device, "c1541c", "Commodore 1541C Disk Drive")
-DEFINE_DEVICE_TYPE(C1541II, c1541ii_device, "c1541ii", "Commodore 1541-II Disk Drive")
+DEFINE_DEVICE_TYPE(C1540, c1540_device, "c1540", "C1540 Disk Drive")
+DEFINE_DEVICE_TYPE(C1541, c1541_device, "c1541", "C1541 Disk Drive")
+DEFINE_DEVICE_TYPE(C1541C, c1541c_device, "c1541c", "C1541C Disk Drive")
+DEFINE_DEVICE_TYPE(C1541II, c1541ii_device, "c1541ii", "C1541-II Disk Drive")
DEFINE_DEVICE_TYPE(SX1541, sx1541_device, "sx1541", "SX1541 Disk Drive")
DEFINE_DEVICE_TYPE(FSD1, fsd1_device, "fsd1", "FSD-1 Disk Drive")
DEFINE_DEVICE_TYPE(FSD2, fsd2_device, "fsd2", "FSD-2 Disk Drive")
DEFINE_DEVICE_TYPE(CSD1, csd1_device, "csd1", "CSD-1 Disk Drive")
-DEFINE_DEVICE_TYPE(C1541_DOLPHIN_DOS, c1541_dolphin_dos_device, "c1541dd", "Commodore 1541 Dolphin-DOS 2.0 Disk Drive")
-DEFINE_DEVICE_TYPE(C1541_PROFESSIONAL_DOS_V1, c1541_professional_dos_v1_device, "c1541pd", "Commodore 1541 Professional-DOS v1 Disk Drive")
-DEFINE_DEVICE_TYPE(C1541_PROLOGIC_DOS_CLASSIC, c1541_prologic_dos_classic_device, "c1541pdc", "Commodore 1541 ProLogic-DOS Classic Disk Drive")
+DEFINE_DEVICE_TYPE(C1541_DOLPHIN_DOS, c1541_dolphin_dos_device, "c1541dd", "C1541 Dolphin-DOS 2.0 Disk Drive")
+DEFINE_DEVICE_TYPE(C1541_PROFESSIONAL_DOS_V1, c1541_professional_dos_v1_device, "c1541pd", "C1541 Professional-DOS v1 Disk Drive")
+DEFINE_DEVICE_TYPE(C1541_PROLOGIC_DOS_CLASSIC, c1541_prologic_dos_classic_device, "c1541pdc", "C1541 ProLogic-DOS Classic Disk Drive")
DEFINE_DEVICE_TYPE(INDUS_GT, indus_gt_device, "indusgt", "Indus GT Disk Drive")
@@ -762,12 +762,12 @@ FLOPPY_FORMATS_END
READ8_MEMBER( c1541_prologic_dos_classic_device::pia_r )
{
- return m_pia->read((offset >> 2) & 0x03);
+ return m_pia->read(space, (offset >> 2) & 0x03);
}
WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_w )
{
- m_pia->write((offset >> 2) & 0x03, data);
+ m_pia->write(space, (offset >> 2) & 0x03, data);
}
WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_pa_w )
diff --git a/src/devices/bus/cbmiec/c1571.cpp b/src/devices/bus/cbmiec/c1571.cpp
index 568cd646fe7..91fe7d4bd96 100644
--- a/src/devices/bus/cbmiec/c1571.cpp
+++ b/src/devices/bus/cbmiec/c1571.cpp
@@ -44,9 +44,9 @@
// DEVICE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(C1570, c1570_device, "c1570", "Commodore 1570 Disk Drive")
-DEFINE_DEVICE_TYPE(C1571, c1571_device, "c1571", "Commodore 1571 Disk Drive")
-DEFINE_DEVICE_TYPE(C1571CR, c1571cr_device, "c1571cr", "Commodore 1571CR Disk Drive")
+DEFINE_DEVICE_TYPE(C1570, c1570_device, "c1570", "C1570 Disk Drive")
+DEFINE_DEVICE_TYPE(C1571, c1571_device, "c1571", "C1571 Disk Drive")
+DEFINE_DEVICE_TYPE(C1571CR, c1571cr_device, "c1571cr", "C1571CR Disk Drive")
DEFINE_DEVICE_TYPE(MINI_CHIEF, mini_chief_device, "minichif", "ICT Mini Chief Disk Drive")
@@ -660,7 +660,7 @@ void c1571cr_device::device_add_mconfig(machine_config &config)
m_via0->writepa_handler().set(FUNC(c1571cr_device::via0_pa_w));
m_via0->writepb_handler().set(FUNC(c1571cr_device::via0_pb_w));
- //MOS5710(config, M5710_TAG, 16_MHz_XTAL / 16);
+ //MCFG_MOS5710_ADD(M5710_TAG, 16_MHz_XTAL / 16, 0)
}
@@ -672,8 +672,7 @@ void mini_chief_device::device_add_mconfig(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &mini_chief_device::mini_chief_mem);
isa8_device &isa8(ISA8(config, ISA_BUS_TAG, 0));
- isa8.set_memspace(m_maincpu, AS_PROGRAM);
- isa8.set_iospace(m_maincpu, AS_PROGRAM);
+ isa8.set_cputag(m_maincpu);
ISA8_SLOT(config, "isa1", 0, ISA_BUS_TAG, mini_chief_isa8_cards, "wd1002a_wx1", false);
}
diff --git a/src/devices/bus/cbmiec/c1581.cpp b/src/devices/bus/cbmiec/c1581.cpp
index f589cb2f427..190cab5cd07 100644
--- a/src/devices/bus/cbmiec/c1581.cpp
+++ b/src/devices/bus/cbmiec/c1581.cpp
@@ -33,8 +33,8 @@
// DEVICE DEFINITIONS
//**************************************************************************
-DEFINE_DEVICE_TYPE(C1563, c1563_device, "c1563", "Commodore 1563 3.5 Disk Drive")
-DEFINE_DEVICE_TYPE(C1581, c1581_device, "c1581", "Commodore 1581 3.5 Disk Drive")
+DEFINE_DEVICE_TYPE(C1563, c1563_device, "c1563", "C1563 Disk Drive")
+DEFINE_DEVICE_TYPE(C1581, c1581_device, "c1581", "C1581 Disk Drive")
//-------------------------------------------------
@@ -267,23 +267,22 @@ FLOPPY_FORMATS_END
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void c1581_device::device_add_mconfig(machine_config &config)
-{
- M6502(config, m_maincpu, 16_MHz_XTAL / 8);
- m_maincpu->set_addrmap(AS_PROGRAM, &c1581_device::c1581_mem);
-
- MOS8520(config, m_cia, 16_MHz_XTAL / 8);
- m_cia->irq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- m_cia->cnt_wr_callback().set(FUNC(c1581_device::cnt_w));
- m_cia->sp_wr_callback().set(FUNC(c1581_device::sp_w));
- m_cia->pa_rd_callback().set(FUNC(c1581_device::cia_pa_r));
- m_cia->pa_wr_callback().set(FUNC(c1581_device::cia_pa_w));
- m_cia->pb_rd_callback().set(FUNC(c1581_device::cia_pb_r));
- m_cia->pb_wr_callback().set(FUNC(c1581_device::cia_pb_w));
+MACHINE_CONFIG_START(c1581_device::device_add_mconfig)
+ MCFG_DEVICE_ADD(M6502_TAG, M6502, 16_MHz_XTAL / 8)
+ MCFG_DEVICE_PROGRAM_MAP(c1581_mem)
+
+ MCFG_DEVICE_ADD(M8520_TAG, MOS8520, 16_MHz_XTAL / 8)
+ MCFG_MOS6526_IRQ_CALLBACK(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
+ MCFG_MOS6526_CNT_CALLBACK(WRITELINE(*this, c1581_device, cnt_w))
+ MCFG_MOS6526_SP_CALLBACK(WRITELINE(*this, c1581_device, sp_w))
+ MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(*this, c1581_device, cia_pa_r))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(*this, c1581_device, cia_pa_w))
+ MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(*this, c1581_device, cia_pb_r))
+ MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(*this, c1581_device, cia_pb_w))
WD1772(config, m_fdc, 16_MHz_XTAL / 2);
FLOPPY_CONNECTOR(config, WD1772_TAG":0", c1581_floppies, "35dd", c1581_device::floppy_formats, true);
-}
+MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/devices/bus/cbmiec/cbmiec.h b/src/devices/bus/cbmiec/cbmiec.h
index ceb03d44948..4977bfc97be 100644
--- a/src/devices/bus/cbmiec/cbmiec.h
+++ b/src/devices/bus/cbmiec/cbmiec.h
@@ -21,6 +21,46 @@
#define CBM_IEC_TAG "iec_bus"
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_CBM_IEC_BUS_ADD() \
+ MCFG_DEVICE_ADD(CBM_IEC_TAG, CBM_IEC, 0)
+
+
+#define MCFG_CBM_IEC_BUS_SRQ_CALLBACK(_write) \
+ downcast<cbm_iec_device *>(device)->set_srq_callback(DEVCB_##_write);
+
+#define MCFG_CBM_IEC_BUS_ATN_CALLBACK(_write) \
+ downcast<cbm_iec_device *>(device)->set_atn_callback(DEVCB_##_write);
+
+#define MCFG_CBM_IEC_BUS_CLK_CALLBACK(_write) \
+ downcast<cbm_iec_device *>(device)->set_clk_callback(DEVCB_##_write);
+
+#define MCFG_CBM_IEC_BUS_DATA_CALLBACK(_write) \
+ downcast<cbm_iec_device *>(device)->set_data_callback(DEVCB_##_write);
+
+#define MCFG_CBM_IEC_BUS_RESET_CALLBACK(_write) \
+ downcast<cbm_iec_device *>(device)->set_reset_callback(DEVCB_##_write);
+
+
+#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) \
+ downcast<cbm_iec_slot_device *>(device)->set_address(_address);
+
+
+#define MCFG_CBM_IEC_ADD(_default_drive) \
+ MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, nullptr) \
+ MCFG_CBM_IEC_SLOT_ADD("iec8", 8, cbm_iec_devices, _default_drive) \
+ MCFG_CBM_IEC_SLOT_ADD("iec9", 9, cbm_iec_devices, nullptr) \
+ MCFG_CBM_IEC_SLOT_ADD("iec10", 10, cbm_iec_devices, nullptr) \
+ MCFG_CBM_IEC_SLOT_ADD("iec11", 11, cbm_iec_devices, nullptr) \
+ MCFG_CBM_IEC_BUS_ADD()
+
+
void cbm_iec_devices(device_slot_interface &device);
//**************************************************************************
@@ -38,6 +78,11 @@ public:
// construction/destruction
cbm_iec_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ template <class Object> devcb_base &set_srq_callback(Object &&wr) { return m_write_srq.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_atn_callback(Object &&wr) { return m_write_atn.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_clk_callback(Object &&wr) { return m_write_clk.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_data_callback(Object &&wr) { return m_write_data.set_callback(std::forward<Object>(wr)); }
+ template <class Object> devcb_base &set_reset_callback(Object &&wr) { return m_write_reset.set_callback(std::forward<Object>(wr)); }
auto srq_callback() { return m_write_srq.bind(); }
auto atn_callback() { return m_write_atn.bind(); }
auto clk_callback() { return m_write_clk.bind(); }
diff --git a/src/devices/bus/cbmiec/interpod.cpp b/src/devices/bus/cbmiec/interpod.cpp
index ac87a55cf21..d6111dafe4d 100644
--- a/src/devices/bus/cbmiec/interpod.cpp
+++ b/src/devices/bus/cbmiec/interpod.cpp
@@ -123,17 +123,16 @@ void interpod_device::interpod_mem(address_map &map)
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void interpod_device::device_add_mconfig(machine_config &config)
-{
- M6502(config, m_maincpu, 1000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &interpod_device::interpod_mem);
+MACHINE_CONFIG_START(interpod_device::device_add_mconfig)
+ MCFG_DEVICE_ADD(R6502_TAG, M6502, 1000000)
+ MCFG_DEVICE_PROGRAM_MAP(interpod_mem)
- VIA6522(config, m_via, 1000000);
- MOS6532_NEW(config, m_riot, 1000000);
- ACIA6850(config, m_acia, 0);
+ MCFG_DEVICE_ADD(R6522_TAG, VIA6522, 1000000)
+ MCFG_DEVICE_ADD(R6532_TAG, MOS6532_NEW, 1000000)
+ MCFG_DEVICE_ADD(MC6850_TAG, ACIA6850, 0)
- ieee488_device::add_cbm_devices(config, nullptr);
-}
+ MCFG_CBM_IEEE488_ADD(nullptr)
+MACHINE_CONFIG_END
//**************************************************************************
diff --git a/src/devices/bus/cbmiec/interpod.h b/src/devices/bus/cbmiec/interpod.h
index 58c193286cf..cc6e07f7c7a 100644
--- a/src/devices/bus/cbmiec/interpod.h
+++ b/src/devices/bus/cbmiec/interpod.h
@@ -27,6 +27,16 @@
#define INTERPOD_TAG "interpod"
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_INTERPOD_ADD() \
+ MCFG_DEVICE_ADD(INTERPOD_TAG, INTERPOD, 0)
+
+
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
diff --git a/src/devices/bus/cbmiec/serialbox.cpp b/src/devices/bus/cbmiec/serialbox.cpp
index ab8326528d0..b14eca1f389 100644
--- a/src/devices/bus/cbmiec/serialbox.cpp
+++ b/src/devices/bus/cbmiec/serialbox.cpp
@@ -69,11 +69,10 @@ void serial_box_device::serial_box_mem(address_map &map)
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void serial_box_device::device_add_mconfig(machine_config &config)
-{
- M65C02(config, m_maincpu, XTAL(4'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &serial_box_device::serial_box_mem);
-}
+MACHINE_CONFIG_START(serial_box_device::device_add_mconfig)
+ MCFG_DEVICE_ADD(M6502_TAG, M65C02, XTAL(4'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(serial_box_mem)
+MACHINE_CONFIG_END
diff --git a/src/devices/bus/cbmiec/vic1515.cpp b/src/devices/bus/cbmiec/vic1515.cpp
index 5accd8b6858..1afc47ce807 100644
--- a/src/devices/bus/cbmiec/vic1515.cpp
+++ b/src/devices/bus/cbmiec/vic1515.cpp
@@ -61,12 +61,11 @@ void vic1515_device::vic1515_io(address_map &map)
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void vic1515_device::device_add_mconfig(machine_config &config)
-{
- i8039_device &maincpu(I8039(config, "maincpu", XTAL(6'000'000)));
- maincpu.set_addrmap(AS_PROGRAM, &vic1515_device::vic1515_mem);
- maincpu.set_addrmap(AS_IO, &vic1515_device::vic1515_io);
-}
+MACHINE_CONFIG_START(vic1515_device::device_add_mconfig)
+ MCFG_DEVICE_ADD("maincpu", I8039, XTAL(6'000'000))
+ MCFG_DEVICE_PROGRAM_MAP(vic1515_mem)
+ MCFG_DEVICE_IO_MAP(vic1515_io)
+MACHINE_CONFIG_END
//-------------------------------------------------
diff --git a/src/devices/bus/cbmiec/vic1520.cpp b/src/devices/bus/cbmiec/vic1520.cpp
index 8e535c230e6..0f515f8638a 100644
--- a/src/devices/bus/cbmiec/vic1520.cpp
+++ b/src/devices/bus/cbmiec/vic1520.cpp
@@ -94,11 +94,10 @@ void vic1520_device::vic1520_mem(address_map &map)
// device_add_mconfig - add device configuration
//-------------------------------------------------
-void vic1520_device::device_add_mconfig(machine_config &config)
-{
- m6502_device &cpu(M6502(config, M6500_1_TAG, XTAL(2'000'000))); // M6500/1
- cpu.set_addrmap(AS_PROGRAM, &vic1520_device::vic1520_mem);
-}
+MACHINE_CONFIG_START(vic1520_device::device_add_mconfig)
+ MCFG_DEVICE_ADD(M6500_1_TAG, M6502, XTAL(2'000'000)) // M6500/1
+ MCFG_DEVICE_PROGRAM_MAP(vic1520_mem)
+MACHINE_CONFIG_END
//-------------------------------------------------