From 8ac98fea56b7c409f5917d78ceafa6bb7a97b653 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Tue, 28 Aug 2018 16:01:05 +0200 Subject: i2cmem,i7220,i80130,i8087,i8212,i8214,i82371sb,i8243: Removed MCFG, nw --- src/devices/bus/lpci/i82371sb.h | 10 ++------ src/devices/machine/i2cmem.h | 14 +++++------ src/devices/machine/i7220.h | 26 ++------------------- src/devices/machine/i80130.h | 44 +++++----------------------------- src/devices/machine/i8087.h | 13 ++--------- src/devices/machine/i8212.h | 27 --------------------- src/devices/machine/i8214.h | 22 ----------------- src/devices/machine/i82371sb.h | 23 ++++-------------- src/devices/machine/i8243.h | 27 +++------------------ src/mame/audio/segag80r.cpp | 6 ++--- src/mame/drivers/a7150.cpp | 10 ++++---- src/mame/drivers/aa310.cpp | 3 +-- src/mame/drivers/amiga.cpp | 4 +--- src/mame/drivers/atpci.cpp | 7 +++--- src/mame/drivers/bitgraph.cpp | 4 +++- src/mame/drivers/cmi.cpp | 52 +++++++++++++++++++---------------------- src/mame/drivers/compis.cpp | 10 ++++---- src/mame/drivers/cubo.cpp | 4 +--- src/mame/drivers/cxhumax.cpp | 3 +-- src/mame/drivers/ertictac.cpp | 5 ++-- src/mame/drivers/fanucspmg.cpp | 10 ++++---- src/mame/drivers/fidelz80.cpp | 8 ++++--- src/mame/drivers/gammagic.cpp | 2 +- src/mame/drivers/ghosteo.cpp | 8 +++---- src/mame/drivers/gridcomp.cpp | 12 +++++----- src/mame/drivers/konin.cpp | 12 +++++----- src/mame/drivers/ms6102.cpp | 4 ++-- src/mame/drivers/odyssey2.cpp | 24 +++++++++++-------- src/mame/drivers/othello.cpp | 4 +++- src/mame/drivers/pc8801.cpp | 2 +- src/mame/drivers/pcipc.cpp | 18 ++++++++------ src/mame/drivers/pokemini.cpp | 3 +-- src/mame/drivers/segas16a.cpp | 4 +++- src/mame/drivers/supstarf.cpp | 12 +++++----- src/mame/drivers/twinkle.cpp | 8 +++---- src/mame/drivers/v1050.cpp | 4 ++-- src/mame/drivers/vii.cpp | 8 +++---- src/mame/machine/ms7004.cpp | 6 +++-- 38 files changed, 156 insertions(+), 307 deletions(-) diff --git a/src/devices/bus/lpci/i82371sb.h b/src/devices/bus/lpci/i82371sb.h index 0352b13e445..7411a6ebea2 100644 --- a/src/devices/bus/lpci/i82371sb.h +++ b/src/devices/bus/lpci/i82371sb.h @@ -24,8 +24,8 @@ public: // construction/destruction i82371sb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_smi_callback(Object &&cb) { return m_smi_callback.set_callback(std::forward(cb)); } - template devcb_base &set_boot_state_hook(Object &&cb) { return m_boot_state_hook.set_callback(std::forward(cb)); } + auto smi() { return m_smi_callback.bind(); } + auto boot_state_hook() { return m_boot_state_hook.bind(); } virtual uint32_t pci_read(pci_bus_device *pcibus, int function, int offset, uint32_t mem_mask) override; virtual void pci_write(pci_bus_device *pcibus, int function, int offset, uint32_t data, uint32_t mem_mask) override; @@ -66,10 +66,4 @@ private: // device type definition DECLARE_DEVICE_TYPE(I82371SB, i82371sb_device) -#define MCFG_I82371SB_SMI_CB(_devcb) \ - downcast(*device).set_smi_callback(DEVCB_##_devcb); - -#define MCFG_I82371SB_BOOT_STATE_HOOK(_devcb) \ - downcast(*device).set_boot_state_hook(DEVCB_##_devcb); - #endif // MAME_BUS_LPCI_I82371SB_H diff --git a/src/devices/machine/i2cmem.h b/src/devices/machine/i2cmem.h index 68bef6dde2f..32a40dba6af 100644 --- a/src/devices/machine/i2cmem.h +++ b/src/devices/machine/i2cmem.h @@ -91,13 +91,13 @@ public: // construction/destruction i2cmem_device( const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock ); - void set_address(int address) { m_slave_address = address; } - void set_page_size(int page_size) { m_page_size = page_size; } - void set_data_size(int data_size) { m_data_size = data_size; } - void set_e0(int e0) { m_e0 = e0; } - void set_e1(int e1) { m_e1 = e1; } - void set_e2(int e2) { m_e2 = e2; } - void set_wc(int wc) { m_wc = wc; } + i2cmem_device & set_address(int address) { m_slave_address = address; return *this; } + i2cmem_device & set_page_size(int page_size) { m_page_size = page_size; return *this; } + i2cmem_device & set_data_size(int data_size) { m_data_size = data_size; return *this; } + i2cmem_device & set_e0(int e0) { m_e0 = e0; return *this; } + i2cmem_device & set_e1(int e1) { m_e1 = e1; return *this; } + i2cmem_device & set_e2(int e2) { m_e2 = e2; return *this; } + i2cmem_device & set_wc(int wc) { m_wc = wc; return *this; } // I/O operations DECLARE_WRITE_LINE_MEMBER( write_e0 ); diff --git a/src/devices/machine/i7220.h b/src/devices/machine/i7220.h index 51eaf3ce917..0d142286092 100644 --- a/src/devices/machine/i7220.h +++ b/src/devices/machine/i7220.h @@ -37,28 +37,6 @@ #define I7110_MBM_SIZE (128 * 1024) // 1 megabit #define I7115_MBM_SIZE (512 * 1024) // 4 megabit - -///************************************************************************* -// INTERFACE CONFIGURATION MACROS -///************************************************************************* - -#define MCFG_I7220_IRQ_CALLBACK(_write) \ - downcast(*device).set_intrq_wr_callback(DEVCB_##_write); - -#define MCFG_I7220_DRQ_CALLBACK(_write) \ - downcast(*device).set_drq_wr_callback(DEVCB_##_write); - -#define MCFG_I7220_DATA_SIZE(data_size) \ - downcast(*device).set_data_size(data_size); - - - -///************************************************************************* -// TYPE DEFINITIONS -///************************************************************************* - -// ======================> i7220_device - class i7220_device : public device_t, public device_image_interface { @@ -66,8 +44,8 @@ public: // construction/destruction i7220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward(cb)); } - template devcb_base &set_drq_wr_callback(Object &&cb) { return drq_cb.set_callback(std::forward(cb)); } + auto irq_callback() { return intrq_cb.bind(); } + auto drq_callback() { return drq_cb.bind(); } void set_data_size(int data_size) { m_data_size = data_size; } diff --git a/src/devices/machine/i80130.h b/src/devices/machine/i80130.h index c4ce3d855aa..27f6e9c582d 100644 --- a/src/devices/machine/i80130.h +++ b/src/devices/machine/i80130.h @@ -14,50 +14,18 @@ #include "machine/pic8259.h" #include "machine/pit8253.h" - - -///************************************************************************* -// INTERFACE CONFIGURATION MACROS -///************************************************************************* - -#define MCFG_I80130_IRQ_CALLBACK(_write) \ - downcast(*device).set_irq_wr_callback(DEVCB_##_write); - -#define MCFG_I80130_ACK_CALLBACK(_write) \ - downcast(*device).set_ack_wr_callback(DEVCB_##_write); - -#define MCFG_I80130_LIR_CALLBACK(_write) \ - downcast(*device).set_lir_wr_callback(DEVCB_##_write); - -#define MCFG_I80130_SYSTICK_CALLBACK(_write) \ - downcast(*device).set_systick_wr_callback(DEVCB_##_write); - -#define MCFG_I80130_DELAY_CALLBACK(_write) \ - downcast(*device).set_delay_wr_callback(DEVCB_##_write); - -#define MCFG_I80130_BAUD_CALLBACK(_write) \ - downcast(*device).set_baud_wr_callback(DEVCB_##_write); - - - -///************************************************************************* -// TYPE DEFINITIONS -///************************************************************************* - -// ======================> i80130_device - class i80130_device : public device_t { public: // construction/destruction i80130_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_irq_wr_callback(Object &&cb) { return m_write_irq.set_callback(std::forward(cb)); } - template devcb_base &set_ack_wr_callback(Object &&cb) { return m_write_ack.set_callback(std::forward(cb)); } - template devcb_base &set_lir_wr_callback(Object &&cb) { return m_write_lir.set_callback(std::forward(cb)); } - template devcb_base &set_systick_wr_callback(Object &&cb) { return m_write_systick.set_callback(std::forward(cb)); } - template devcb_base &set_delay_wr_callback(Object &&cb) { return m_write_delay.set_callback(std::forward(cb)); } - template devcb_base &set_baud_wr_callback(Object &&cb) { return m_write_baud.set_callback(std::forward(cb)); } + auto irq() { return m_write_irq.bind(); } + auto ack() { return m_write_ack.bind(); } + auto lir() { return m_write_lir.bind(); } + auto systick() { return m_write_systick.bind(); } + auto delay() { return m_write_delay.bind(); } + auto baud() { return m_write_baud.bind(); } virtual void rom_map(address_map &map); virtual void io_map(address_map &map); diff --git a/src/devices/machine/i8087.h b/src/devices/machine/i8087.h index e0d5ab7e87e..290b9a95b16 100644 --- a/src/devices/machine/i8087.h +++ b/src/devices/machine/i8087.h @@ -8,15 +8,6 @@ #include "softfloat/softfloat.h" #endif -#define MCFG_I8087_DATA_WIDTH(_data_width) \ - downcast(*device).set_data_width(_data_width); - -#define MCFG_I8087_INT_HANDLER(_devcb) \ - downcast(*device).set_int(DEVCB_##_devcb); - -#define MCFG_I8087_BUSY_HANDLER(_devcb) \ - downcast(*device).set_busy(DEVCB_##_devcb); - DECLARE_DEVICE_TYPE(I8087, i8087_device) class i8087_device : public device_t, @@ -25,8 +16,8 @@ class i8087_device : public device_t, public: i8087_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); void set_data_width(u8 data_width) { m_data_width = data_width; } - template devcb_base &set_int(Object &&cb) { return m_int_handler.set_callback(std::forward(cb)); } - template devcb_base &set_busy(Object &&cb) { return m_busy_handler.set_callback(std::forward(cb)); } + auto irq() { return m_int_handler.bind(); } + auto busy() { return m_busy_handler.bind(); } DECLARE_WRITE32_MEMBER(insn_w); // the real 8087 sniffs the bus watching for esc, can't do that here so provide a poke spot DECLARE_WRITE32_MEMBER(addr_w); diff --git a/src/devices/machine/i8212.h b/src/devices/machine/i8212.h index 477f9d8689b..255a4edc469 100644 --- a/src/devices/machine/i8212.h +++ b/src/devices/machine/i8212.h @@ -26,33 +26,6 @@ #pragma once - - - -///************************************************************************* -// INTERFACE CONFIGURATION MACROS -///************************************************************************* - -#define MCFG_I8212_INT_CALLBACK(_write) \ - downcast(*device).set_int_wr_callback(DEVCB_##_write); - -#define MCFG_I8212_DI_CALLBACK(_read) \ - downcast(*device).set_di_rd_callback(DEVCB_##_read); - -#define MCFG_I8212_DO_CALLBACK(_write) \ - downcast(*device).set_do_wr_callback(DEVCB_##_write); - -#define MCFG_I8212_MD_CALLBACK(_read) \ - downcast(*device).set_md_rd_callback(DEVCB_##_read); - - - -///************************************************************************* -// TYPE DEFINITIONS -///************************************************************************* - -// ======================> i8212_device - class i8212_device : public device_t { enum class mode : u8 diff --git a/src/devices/machine/i8214.h b/src/devices/machine/i8214.h index dc609c24f15..6181fe05d81 100644 --- a/src/devices/machine/i8214.h +++ b/src/devices/machine/i8214.h @@ -26,34 +26,12 @@ #pragma once - - -///************************************************************************* -// INTERFACE CONFIGURATION MACROS -///************************************************************************* - -#define MCFG_I8214_INT_CALLBACK(_write) \ - downcast(*device).set_int_wr_callback(DEVCB_##_write); - -#define MCFG_I8214_ENLG_CALLBACK(_write) \ - downcast(*device).set_enlg_wr_callback(DEVCB_##_write); - - - -///************************************************************************* -// TYPE DEFINITIONS -///************************************************************************* - -// ======================> i8214_device - class i8214_device : public device_t { public: // construction/destruction i8214_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward(cb)); } - template devcb_base &set_enlg_wr_callback(Object &&cb) { return m_write_enlg.set_callback(std::forward(cb)); } auto int_wr_callback() { return m_write_int.bind(); } auto enlg_wr_callback() { return m_write_enlg.bind(); } diff --git a/src/devices/machine/i82371sb.h b/src/devices/machine/i82371sb.h index 5f39b9ed07f..ea7976ad845 100644 --- a/src/devices/machine/i82371sb.h +++ b/src/devices/machine/i82371sb.h @@ -24,18 +24,12 @@ #include "machine/am9517a.h" -#define MCFG_I82371SB_SMI_CB(_devcb) \ - downcast(*device).set_smi_callback(DEVCB_##_devcb); - -#define MCFG_I82371SB_BOOT_STATE_HOOK(_devcb) \ - downcast(*device).set_boot_state_hook(DEVCB_##_devcb); - class i82371sb_isa_device : public pci_device { public: i82371sb_isa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_smi_callback(Object &&cb) { return m_smi_callback.set_callback(std::forward(cb)); } - template devcb_base &set_boot_state_hook(Object &&cb) { return m_boot_state_hook.set_callback(std::forward(cb)); } + auto smi() { return m_smi_callback.bind(); } + auto boot_state_hook() { return m_boot_state_hook.bind(); } DECLARE_WRITE_LINE_MEMBER(pc_pirqa_w); DECLARE_WRITE_LINE_MEMBER(pc_pirqb_w); @@ -207,22 +201,13 @@ private: DECLARE_DEVICE_TYPE(I82371SB_ISA, i82371sb_isa_device) -#define MCFG_I82371SB_IDE_IRQ_PRI_CB(_devcb) \ - downcast(*device).set_irq_pri_callback(DEVCB_##_devcb); - -#define MCFG_I82371SB_IDE_IRQ_SEC_CB(_devcb) \ - downcast(*device).set_irq_sec_callback(DEVCB_##_devcb); - -#define MCFG_I82371SB_IDE_INTERRUPTS(_tag, _dev, _irq_pri, _irq_sec) \ - MCFG_I82371SB_IDE_IRQ_PRI_CB(WRITELINE(_tag, _dev, _irq_pri)) \ - MCFG_I82371SB_IDE_IRQ_SEC_CB(WRITELINE(_tag, _dev, _irq_sec)) class i82371sb_ide_device : public pci_device { public: i82371sb_ide_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_irq_pri_callback(Object &&cb) { return m_irq_pri_callback.set_callback(std::forward(cb)); } - template devcb_base &set_irq_sec_callback(Object &&cb) { return m_irq_sec_callback.set_callback(std::forward(cb)); } + auto irq_pri() { return m_irq_pri_callback.bind(); } + auto irq_sec() { return m_irq_sec_callback.bind(); } protected: virtual void device_start() override; diff --git a/src/devices/machine/i8243.h b/src/devices/machine/i8243.h index 76c4b601bd8..cea6fe4f468 100644 --- a/src/devices/machine/i8243.h +++ b/src/devices/machine/i8243.h @@ -13,36 +13,15 @@ #pragma once - - -/*************************************************************************** - DEVICE CONFIGURATION MACROS -***************************************************************************/ - -#define MCFG_I8243_ADD(_tag, _read, _write) \ - MCFG_DEVICE_ADD(_tag, I8243, 0) \ - MCFG_I8243_READHANDLER(_read) \ - MCFG_I8243_WRITEHANDLER(_write) -#define MCFG_I8243_READHANDLER(_devcb) \ - downcast(*device).set_read_handler(DEVCB_##_devcb); -#define MCFG_I8243_WRITEHANDLER(_devcb) \ - downcast(*device).set_write_handler(DEVCB_##_devcb); -/*************************************************************************** - TYPE DEFINITIONS -***************************************************************************/ - - -// ======================> i8243_device - class i8243_device : public device_t { public: // construction/destruction - i8243_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + i8243_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); // configuration helpers - template devcb_base &set_read_handler(Object &&cb) { return m_readhandler.set_callback(std::forward(cb)); } - template devcb_base &set_write_handler(Object &&cb) { return m_writehandler.set_callback(std::forward(cb)); } + auto read_handler() { return m_readhandler.bind(); } + auto write_handler() { return m_writehandler.bind(); } DECLARE_READ8_MEMBER(p2_r); DECLARE_WRITE8_MEMBER(p2_w); diff --git a/src/mame/audio/segag80r.cpp b/src/mame/audio/segag80r.cpp index 4e83f39f723..0120a039723 100644 --- a/src/mame/audio/segag80r.cpp +++ b/src/mame/audio/segag80r.cpp @@ -703,9 +703,9 @@ MACHINE_CONFIG_START(monsterb_sound_device::device_add_mconfig) MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(*this, monsterb_sound_device, n7751_p2_w)) MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(m_i8243, i8243_device, prog_w)) - MCFG_DEVICE_ADD(m_i8243, I8243, 0) - MCFG_I8243_READHANDLER(CONSTANT(0)) - MCFG_I8243_WRITEHANDLER(WRITE8(*this, monsterb_sound_device, n7751_rom_control_w)) + I8243(config, m_i8243); + m_i8243->read_handler().set_constant(0); + m_i8243->write_handler().set(FUNC(monsterb_sound_device::n7751_rom_control_w)); MCFG_DEVICE_ADD(m_samples, SAMPLES) MCFG_SAMPLES_CHANNELS(2) diff --git a/src/mame/drivers/a7150.cpp b/src/mame/drivers/a7150.cpp index 134c0984ad9..56652a50223 100644 --- a/src/mame/drivers/a7150.cpp +++ b/src/mame/drivers/a7150.cpp @@ -475,11 +475,11 @@ MACHINE_CONFIG_START(a7150_state::a7150) MCFG_I8086_ESC_OPCODE_HANDLER(WRITE32("i8087", i8087_device, insn_w)) MCFG_I8086_ESC_DATA_HANDLER(WRITE32("i8087", i8087_device, addr_w)) - MCFG_DEVICE_ADD("i8087", I8087, XTAL(9'832'000)/2) - MCFG_DEVICE_PROGRAM_MAP(a7150_mem) - MCFG_I8087_DATA_WIDTH(16) - MCFG_I8087_INT_HANDLER(WRITELINE("pic8259", pic8259_device, ir0_w)) - MCFG_I8087_BUSY_HANDLER(INPUTLINE("maincpu", INPUT_LINE_TEST)) + i8087_device &i8087(I8087(config, "i8087", XTAL(9'832'000)/2)); + i8087.set_addrmap(AS_PROGRAM, &a7150_state::a7150_mem); + i8087.set_data_width(16); + i8087.irq().set("pic8259", FUNC(pic8259_device::ir0_w)); + i8087.busy().set_inputline("maincpu", INPUT_LINE_TEST); MCFG_DEVICE_ADD("pic8259", PIC8259, 0) MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) diff --git a/src/mame/drivers/aa310.cpp b/src/mame/drivers/aa310.cpp index 4264e183cea..0e88415e344 100644 --- a/src/mame/drivers/aa310.cpp +++ b/src/mame/drivers/aa310.cpp @@ -415,8 +415,7 @@ MACHINE_CONFIG_START(aa310_state::aa310) m_kart->out_tx_callback().set(FUNC(archimedes_state::a310_kart_tx_w)); m_kart->out_rx_callback().set(FUNC(archimedes_state::a310_kart_rx_w)); - MCFG_I2CMEM_ADD("i2cmem") - MCFG_I2CMEM_DATA_SIZE(0x100) + I2CMEM(config, "i2cmem", 0).set_data_size(0x100); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp index ffa5bd40d63..70338e2767d 100644 --- a/src/mame/drivers/amiga.cpp +++ b/src/mame/drivers/amiga.cpp @@ -2115,9 +2115,7 @@ MACHINE_CONFIG_START(cd32_state::cd32) ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_2mb_map32).set_options(ENDIANNESS_BIG, 32, 22, 0x200000); - MCFG_I2CMEM_ADD("i2cmem") - MCFG_I2CMEM_PAGE_SIZE(16) - MCFG_I2CMEM_DATA_SIZE(1024) + I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(1024); akiko_device &akiko(AKIKO(config, "akiko", 0)); akiko.mem_r_callback().set(FUNC(amiga_state::chip_ram_r)); diff --git a/src/mame/drivers/atpci.cpp b/src/mame/drivers/atpci.cpp index 9e30991eac1..245457197dc 100644 --- a/src/mame/drivers/atpci.cpp +++ b/src/mame/drivers/atpci.cpp @@ -54,10 +54,9 @@ void at586_state::tx_config(device_t *device) void at586_state::sb_config(device_t *device) { - devcb_base *devcb = nullptr; - (void)devcb; - MCFG_I82371SB_BOOT_STATE_HOOK(WRITE8(":", at586_state, boot_state_w)) - MCFG_I82371SB_SMI_CB(INPUTLINE(":maincpu", INPUT_LINE_SMI)) + i82371sb_device &sb = *downcast(device); + sb.boot_state_hook().set(":", FUNC(at586_state::boot_state_w)); + sb.smi().set_inputline(":maincpu", INPUT_LINE_SMI); } diff --git a/src/mame/drivers/bitgraph.cpp b/src/mame/drivers/bitgraph.cpp index daa34c09570..81b5c99a942 100644 --- a/src/mame/drivers/bitgraph.cpp +++ b/src/mame/drivers/bitgraph.cpp @@ -565,7 +565,9 @@ MACHINE_CONFIG_START(bitgraph_state::bg_ppu) // MCFG_MCS48_PORT_T0_IN_CB(READLINE(*this, bitgraph_state, ppu_t0_r)) MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE("i8243", i8243_device, prog_w)) - MCFG_I8243_ADD("i8243", NOOP, WRITE8(*this, bitgraph_state, ppu_i8243_w)) + i8243_device &i8243(I8243(config, "i8243")); + i8243.read_handler().set_nop(); + i8243.write_handler().set(FUNC(bitgraph_state::ppu_i8243_w)); MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer") MCFG_CENTRONICS_ACK_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit6)) diff --git a/src/mame/drivers/cmi.cpp b/src/mame/drivers/cmi.cpp index 4f197fcdfff..32ec546c762 100644 --- a/src/mame/drivers/cmi.cpp +++ b/src/mame/drivers/cmi.cpp @@ -220,9 +220,7 @@ public: , m_midicpu(*this, "smptemidi") , m_cmi07cpu(*this, "cmi07cpu") , m_msm5832(*this, "msm5832") - , m_i8214_0(*this, "i8214_1") - , m_i8214_1(*this, "i8214_2") - , m_i8214_2(*this, "i8214_3") + , m_i8214(*this, "i8214_%u", 1U) , m_q133_pia(*this, "q133_pia_%u", 1U) , m_q133_ptm(*this, "q133_ptm") , m_q133_acia(*this, "q133_acia_%u", 0U) @@ -377,9 +375,7 @@ protected: required_device m_cmi07cpu; required_device m_msm5832; - required_device m_i8214_0; - required_device m_i8214_1; - required_device m_i8214_2; + required_device_array m_i8214; required_device_array m_q133_pia; required_device m_q133_ptm; required_device_array m_q133_acia; @@ -1585,8 +1581,8 @@ WRITE8_MEMBER( cmi_state::cmi02_w ) case 0x30: m_maincpu1->set_input_line(M6809_IRQ_LINE, CLEAR_LINE); data ^= 0xff; - m_i8214_2->sgs_w((data >> 3) & 1); - m_i8214_2->b_w(data & 0x7); + m_i8214[2]->sgs_w((data >> 3) & 1); + m_i8214[2]->b_w(data & 0x7); break; case 0x31: case 0x32: @@ -1625,8 +1621,8 @@ WRITE8_MEMBER( cmi_state::i8214_cpu1_w ) //printf("i8214_cpu1_w: %02x\n", data); m_maincpu1->set_input_line(M6809_IRQ_LINE, CLEAR_LINE); data ^= 0xff; - m_i8214_0->sgs_w((data >> 3) & 1); - m_i8214_0->b_w(data & 0x7); + m_i8214[0]->sgs_w((data >> 3) & 1); + m_i8214[0]->b_w(data & 0x7); } @@ -1635,8 +1631,8 @@ WRITE8_MEMBER( cmi_state::i8214_cpu2_w ) //printf("i8214_cpu2_w: %02x\n", data); m_maincpu2->set_input_line(M6809_IRQ_LINE, CLEAR_LINE); data ^= 0xff; - m_i8214_1->sgs_w((data >> 3) & 1); - m_i8214_1->b_w(data & 0x7); + m_i8214[1]->sgs_w((data >> 3) & 1); + m_i8214[1]->b_w(data & 0x7); } // TODO: replace with AM_SHARE @@ -1732,7 +1728,7 @@ IRQ_CALLBACK_MEMBER( cmi_state::cpu1_interrupt_callback ) if (irqline == INPUT_LINE_IRQ0) { int vector = (m_hp_int ? 0xffe0 : 0xffd0); - int level = (m_hp_int ? m_i8214_2->a_r() : m_i8214_0->a_r()) ^ 7; + int level = (m_hp_int ? m_i8214[2]->a_r() : m_i8214[0]->a_r()) ^ 7; m_irq_address[CPU_1][0] = m_cpu1space->read_byte(vector + level*2); m_irq_address[CPU_1][1] = m_cpu1space->read_byte(vector + level*2 + 1); @@ -1753,7 +1749,7 @@ IRQ_CALLBACK_MEMBER( cmi_state::cpu2_interrupt_callback ) if (irqline == INPUT_LINE_IRQ0) { - int level = m_i8214_1->a_r() ^ 0x7; + int level = m_i8214[1]->a_r() ^ 0x7; m_irq_address[CPU_2][0] = m_cpu2space->read_byte(0xffe0 + level*2); m_irq_address[CPU_2][1] = m_cpu2space->read_byte(0xffe0 + level*2 + 1); @@ -1769,7 +1765,7 @@ void cmi_state::set_interrupt(int cpunum, int level, int state) { //printf("CPU%d Int: %x State: %x\n", cpunum + 1, level, state); - i8214_device *i8214 = ((cpunum == CPU_2) ? m_i8214_1 : (level < 8 ? m_i8214_2 : m_i8214_0)); + i8214_device *i8214 = ((cpunum == CPU_2) ? m_i8214[1] : (level < 8 ? m_i8214[2] : m_i8214[0])); i8214->r_w(level & 7, state ? 0 : 1); } @@ -2063,12 +2059,12 @@ void cmi_state::machine_reset() m_qfc9_region_ptr = (uint8_t *)m_qfc9_region->base(); /* Set 8214 interrupt lines */ - m_i8214_0->etlg_w(1); - m_i8214_0->inte_w(1); - m_i8214_1->etlg_w(1); - m_i8214_1->inte_w(1); - m_i8214_2->etlg_w(1); - m_i8214_2->inte_w(1); + m_i8214[0]->etlg_w(1); + m_i8214[0]->inte_w(1); + m_i8214[1]->etlg_w(1); + m_i8214[1]->inte_w(1); + m_i8214[2]->etlg_w(1); + m_i8214[2]->inte_w(1); m_hblank_timer->adjust(m_screen->time_until_pos(0, HBLANK_START)); @@ -2203,13 +2199,13 @@ MACHINE_CONFIG_START(cmi_state::cmi2x) MCFG_DEVICE_ADD("msm5832", MSM5832, 32.768_kHz_XTAL) - MCFG_DEVICE_ADD("i8214_1", I8214, 1000000) // cmi_8214_intf_1 - MCFG_I8214_INT_CALLBACK(WRITELINE(*this, cmi_state, i8214_1_int_w)) - MCFG_DEVICE_ADD("i8214_2", I8214, 1000000) // cmi_8214_intf_2 - MCFG_I8214_INT_CALLBACK(WRITELINE(*this, cmi_state, i8214_2_int_w)) - MCFG_DEVICE_ADD("i8214_3", I8214, 1000000) // cmi_8214_intf_3 - MCFG_I8214_INT_CALLBACK(WRITELINE(*this, cmi_state, i8214_3_int_w)) - MCFG_I8214_ENLG_CALLBACK(WRITELINE(*this, cmi_state, i8214_3_enlg)) + I8214(config, m_i8214[0], 1000000); // cmi_8214_intf_1 + m_i8214[0]->int_wr_callback().set(FUNC(cmi_state::i8214_1_int_w)); + I8214(config, m_i8214[1], 1000000); // cmi_8214_intf_2 + m_i8214[1]->int_wr_callback().set(FUNC(cmi_state::i8214_2_int_w)); + I8214(config, m_i8214[2], 1000000); // cmi_8214_intf_3 + m_i8214[2]->int_wr_callback().set(FUNC(cmi_state::i8214_3_int_w)); + m_i8214[2]->enlg_wr_callback().set(FUNC(cmi_state::i8214_3_enlg)); PIA6821(config, m_q133_pia[0], 0); // pia_q133_1_config m_q133_pia[0]->readpa_handler().set(FUNC(cmi_state::q133_1_porta_r)); diff --git a/src/mame/drivers/compis.cpp b/src/mame/drivers/compis.cpp index af196a82eb9..70c73817d0e 100644 --- a/src/mame/drivers/compis.cpp +++ b/src/mame/drivers/compis.cpp @@ -761,11 +761,11 @@ MACHINE_CONFIG_START(compis_state::compis) MCFG_80186_TMROUT1_HANDLER(WRITELINE(DEVICE_SELF, compis_state, tmr1_w)) // devices - MCFG_DEVICE_ADD(I80130_TAG, I80130, 15.36_MHz_XTAL/2) - MCFG_I80130_IRQ_CALLBACK(WRITELINE(I80186_TAG, i80186_cpu_device, int0_w)) - MCFG_I80130_SYSTICK_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir3_w)) - MCFG_I80130_DELAY_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir7_w)) - MCFG_I80130_BAUD_CALLBACK(WRITELINE(*this, compis_state, tmr2_w)) + I80130(config, m_osp, 15.36_MHz_XTAL/2); + m_osp->irq().set(I80186_TAG, FUNC(i80186_cpu_device::int0_w)); + m_osp->systick().set(I80130_TAG, FUNC(i80130_device::ir3_w)); + m_osp->delay().set(I80130_TAG, FUNC(i80130_device::ir7_w)); + m_osp->baud().set(FUNC(compis_state::tmr2_w)); MCFG_DEVICE_ADD(I8253_TAG, PIT8253, 0) MCFG_PIT8253_CLK0(15.36_MHz_XTAL/8) diff --git a/src/mame/drivers/cubo.cpp b/src/mame/drivers/cubo.cpp index 5dfa7551b87..2eafaa32783 100644 --- a/src/mame/drivers/cubo.cpp +++ b/src/mame/drivers/cubo.cpp @@ -1038,9 +1038,7 @@ MACHINE_CONFIG_START(cubo_state::cubo) ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_2mb_map32).set_options(ENDIANNESS_BIG, 32, 22, 0x200000); - MCFG_I2CMEM_ADD("i2cmem") - MCFG_I2CMEM_PAGE_SIZE(16) - MCFG_I2CMEM_DATA_SIZE(1024) + I2CMEM(config, "i2cmem", 0).set_page_size(16).set_data_size(1024); akiko_device &akiko(AKIKO(config, "akiko", 0)); akiko.mem_r_callback().set(FUNC(amiga_state::chip_ram_r)); diff --git a/src/mame/drivers/cxhumax.cpp b/src/mame/drivers/cxhumax.cpp index c76d565ca51..d64bc10c2ec 100644 --- a/src/mame/drivers/cxhumax.cpp +++ b/src/mame/drivers/cxhumax.cpp @@ -1061,8 +1061,7 @@ MACHINE_CONFIG_START(cxhumax_state::cxhumax) MCFG_INTEL_28F320J3D_ADD("flash") - MCFG_I2CMEM_ADD("eeprom") - MCFG_I2CMEM_DATA_SIZE(0x2000) + I2CMEM(config, "eeprom", 0).set_data_size(0x2000); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/ertictac.cpp b/src/mame/drivers/ertictac.cpp index 1d507ef9632..902a606b914 100644 --- a/src/mame/drivers/ertictac.cpp +++ b/src/mame/drivers/ertictac.cpp @@ -229,9 +229,8 @@ MACHINE_CONFIG_START(ertictac_state::ertictac) MCFG_DEVICE_PROGRAM_MAP(ertictac_map) MCFG_DEVICE_PERIODIC_INT_DRIVER(ertictac_state, ertictac_podule_irq, 60) // FIXME: timing of this - MCFG_I2CMEM_ADD("i2cmem") - MCFG_I2CMEM_PAGE_SIZE(NVRAM_PAGE_SIZE) - MCFG_I2CMEM_DATA_SIZE(NVRAM_SIZE) + I2CMEM(config, "i2cmem", 0).set_page_size(NVRAM_PAGE_SIZE).set_data_size(NVRAM_SIZE); + // AAKART(config, m_kart, XTAL(24'000'000)/3); // TODO: frequency MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/fanucspmg.cpp b/src/mame/drivers/fanucspmg.cpp index 77a503c283b..840934afffa 100644 --- a/src/mame/drivers/fanucspmg.cpp +++ b/src/mame/drivers/fanucspmg.cpp @@ -975,11 +975,11 @@ MACHINE_CONFIG_START(fanucspmg_state::fanucspmg) MCFG_I8086_ESC_OPCODE_HANDLER(WRITE32("i8087", i8087_device, insn_w)) MCFG_I8086_ESC_DATA_HANDLER(WRITE32("i8087", i8087_device, addr_w)) - MCFG_DEVICE_ADD("i8087", I8087, XTAL(15'000'000)/3) - MCFG_DEVICE_PROGRAM_MAP(maincpu_mem) - MCFG_I8087_DATA_WIDTH(16) - //MCFG_I8087_INT_HANDLER(INPUTLINE("maincpu", INPUT_LINE_NMI)) // TODO: presumably this is connected to the pic - MCFG_I8087_BUSY_HANDLER(INPUTLINE("maincpu", INPUT_LINE_TEST)) + i8087_device &i8087(I8087(config, "i8087", XTAL(15'000'000)/3)); + i8087.set_addrmap(AS_PROGRAM, &fanucspmg_state::maincpu_mem); + i8087.set_data_width(16); + //i8087.irq().set_inputline("maincpu", INPUT_LINE_NMI); // TODO: presumably this is connected to the pic + i8087.busy().set_inputline("maincpu", INPUT_LINE_TEST); MCFG_DEVICE_ADD(SUBCPU_TAG, I8085A, XTAL(16'000'000)/2/2) MCFG_DEVICE_PROGRAM_MAP(subcpu_mem) diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp index 7af9e8f97be..db0f270340a 100644 --- a/src/mame/drivers/fidelz80.cpp +++ b/src/mame/drivers/fidelz80.cpp @@ -1786,12 +1786,14 @@ MACHINE_CONFIG_START(fidelz80_state::vbrc) MCFG_DEVICE_ADD("mcu", I8041, 5_MHz_XTAL) MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(*this, fidelz80_state, vbrc_mcu_p1_w)) MCFG_MCS48_PORT_P2_IN_CB(READ8(*this, fidelz80_state, vbrc_mcu_p2_r)) - MCFG_MCS48_PORT_P2_OUT_CB(WRITE8("i8243", i8243_device, p2_w)) - MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE("i8243", i8243_device, prog_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(m_i8243, i8243_device, p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(m_i8243, i8243_device, prog_w)) MCFG_MCS48_PORT_T0_IN_CB(READLINE(*this, fidelz80_state, vbrc_mcu_t0_r)) MCFG_MCS48_PORT_T1_IN_CB(READLINE(*this, fidelz80_state, vbrc_mcu_t1_r)) - MCFG_I8243_ADD("i8243", CONSTANT(0), WRITE8(*this, fidelz80_state, vbrc_ioexp_port_w)) + I8243(config, m_i8243); + m_i8243->read_handler().set_constant(0); + m_i8243->write_handler().set(FUNC(fidelz80_state::vbrc_ioexp_port_w)); MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) config.set_default_layout(layout_fidel_vbrc); diff --git a/src/mame/drivers/gammagic.cpp b/src/mame/drivers/gammagic.cpp index 251e97e26e1..da8ff25b76d 100644 --- a/src/mame/drivers/gammagic.cpp +++ b/src/mame/drivers/gammagic.cpp @@ -138,7 +138,7 @@ MACHINE_CONFIG_START(gammagic_state::gammagic) pcat_common(config); -// MCFG_I82371SB_ADD("i82371sb") +// I82371SB(config, "i82371sb", 0); // MCFG_I82439TX_ADD("i82439tx", "maincpu", "user") MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0) // MCFG_PCI_BUS_DEVICE(0, "i82439tx", i82439tx_pci_read, i82439tx_pci_write) diff --git a/src/mame/drivers/ghosteo.cpp b/src/mame/drivers/ghosteo.cpp index f63b608a318..462886ab01a 100644 --- a/src/mame/drivers/ghosteo.cpp +++ b/src/mame/drivers/ghosteo.cpp @@ -634,7 +634,7 @@ MACHINE_CONFIG_START(ghosteo_state::ghosteo) // MCFG_NAND_TYPE(NAND_CHIP_K9F5608U0D) // or another variant with ID 0xEC 0x75 ? // MCFG_NAND_RNB_CALLBACK(WRITELINE("s3c2410", s3c2410_device, s3c24xx_pin_frnb_w)) -// MCFG_I2CMEM_ADD("i2cmem", 0xA0, 0, 0x100, nullptr) +// I2CMEM(config, "i2cmem", 0, 0xA0, 0, 0x100, nullptr); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); @@ -658,16 +658,14 @@ MACHINE_CONFIG_START(ghosteo_state::bballoon) ghosteo(config); MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_PROGRAM_MAP(bballoon_map) - MCFG_I2CMEM_ADD("i2cmem") - MCFG_I2CMEM_DATA_SIZE(256) + I2CMEM(config, "i2cmem", 0).set_data_size(256); MACHINE_CONFIG_END MACHINE_CONFIG_START(ghosteo_state::touryuu) ghosteo(config); MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_PROGRAM_MAP(touryuu_map) - MCFG_I2CMEM_ADD("i2cmem") - MCFG_I2CMEM_DATA_SIZE(1024) + I2CMEM(config, "i2cmem", 0).set_data_size(1024); MACHINE_CONFIG_END diff --git a/src/mame/drivers/gridcomp.cpp b/src/mame/drivers/gridcomp.cpp index d18a022bd1b..02a19f116fa 100644 --- a/src/mame/drivers/gridcomp.cpp +++ b/src/mame/drivers/gridcomp.cpp @@ -376,8 +376,8 @@ MACHINE_CONFIG_START(gridcomp_state::grid1101) MCFG_MACHINE_START_OVERRIDE(gridcomp_state, gridcomp) MCFG_MACHINE_RESET_OVERRIDE(gridcomp_state, gridcomp) - MCFG_DEVICE_ADD(I80130_TAG, I80130, XTAL(15'000'000)/3) - MCFG_I80130_IRQ_CALLBACK(INPUTLINE("maincpu", 0)) + I80130(config, m_osp, XTAL(15'000'000)/3); + m_osp->irq().set_inputline("maincpu", 0); SPEAKER(config, "mono").front_center(); MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) @@ -394,10 +394,10 @@ MACHINE_CONFIG_START(gridcomp_state::grid1101) MCFG_DEVICE_ADD("keyboard", GRID_KEYBOARD, 0) MCFG_GRID_KEYBOARD_CB(PUT(gridcomp_state, kbd_put)) - MCFG_DEVICE_ADD("i7220", I7220, XTAL(4'000'000)) - MCFG_I7220_DATA_SIZE(3) // 3 1-Mbit MBM's - MCFG_I7220_IRQ_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir1_w)) - MCFG_I7220_DRQ_CALLBACK(WRITELINE(I80130_TAG, i80130_device, ir1_w)) + i7220_device &i7220(I7220(config, "i7220", XTAL(4'000'000))); + i7220.set_data_size(3); // 3 1-Mbit MBM's + i7220.irq_callback().set(I80130_TAG, FUNC(i80130_device::ir1_w)); + i7220.drq_callback().set(I80130_TAG, FUNC(i80130_device::ir1_w)); MCFG_DEVICE_ADD("hpib", TMS9914, XTAL(4'000'000)) MCFG_TMS9914_INT_WRITE_CB(WRITELINE(I80130_TAG, i80130_device, ir5_w)) diff --git a/src/mame/drivers/konin.cpp b/src/mame/drivers/konin.cpp index 07671e183ce..51f517c0dda 100644 --- a/src/mame/drivers/konin.cpp +++ b/src/mame/drivers/konin.cpp @@ -140,13 +140,13 @@ MACHINE_CONFIG_START(konin_state::konin) MCFG_I8085A_INTE(WRITELINE("picu", i8214_device, inte_w)) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("intlatch", i8212_device, inta_cb) - MCFG_DEVICE_ADD("intlatch", I8212, 0) - MCFG_I8212_MD_CALLBACK(CONSTANT(0)) - MCFG_I8212_DI_CALLBACK(READ8("picu", i8214_device, vector_r)) - MCFG_I8212_INT_CALLBACK(INPUTLINE("maincpu", I8085_INTR_LINE)) + i8212_device &intlatch(I8212(config, "intlatch", 0)); + intlatch.md_rd_callback().set_constant(0); + intlatch.di_rd_callback().set(m_picu, FUNC(i8214_device::vector_r)); + intlatch.int_wr_callback().set_inputline("maincpu", I8085_INTR_LINE); - MCFG_DEVICE_ADD("picu", I8214, XTAL(4'000'000)) - MCFG_I8214_INT_CALLBACK(WRITELINE("intlatch", i8212_device, stb_w)) + I8214(config, m_picu, XTAL(4'000'000)); + m_picu->int_wr_callback().set("intlatch", FUNC(i8212_device::stb_w)); pit8253_device &mainpit(PIT8253(config, "mainpit", 0)); // wild guess at UART clock and source diff --git a/src/mame/drivers/ms6102.cpp b/src/mame/drivers/ms6102.cpp index c45d912776f..cac9d0c1a91 100644 --- a/src/mame/drivers/ms6102.cpp +++ b/src/mame/drivers/ms6102.cpp @@ -312,8 +312,8 @@ MACHINE_CONFIG_START(ms6102_state::ms6102) MCFG_I8085A_INTE(WRITELINE("i8214", i8214_device, inte_w)) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(ms6102_state, ms6102_int_ack) - MCFG_DEVICE_ADD("i8214", I8214, XTAL(18'432'000) / 9) - MCFG_I8214_INT_CALLBACK(WRITELINE(*this, ms6102_state, irq_w)) + I8214(config, m_pic, XTAL(18'432'000) / 9); + m_pic->int_wr_callback().set(FUNC(ms6102_state::irq_w)); MCFG_DEVICE_ADD("earom", KR1601RR1, 0) diff --git a/src/mame/drivers/odyssey2.cpp b/src/mame/drivers/odyssey2.cpp index fe6c53ce6b7..d5530db733b 100644 --- a/src/mame/drivers/odyssey2.cpp +++ b/src/mame/drivers/odyssey2.cpp @@ -753,12 +753,12 @@ MACHINE_CONFIG_START(g7400_state::g7400) MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(*this, g7400_state, bus_write)) MCFG_MCS48_PORT_T0_IN_CB(READLINE("cartslot", o2_cart_slot_device, t0_read)) MCFG_MCS48_PORT_T1_IN_CB(READLINE(*this, g7400_state, t1_read)) - MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE("i8243", i8243_device, prog_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(m_i8243, i8243_device, prog_w)) MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS( 3540000 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8245_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT ) + MCFG_SCREEN_RAW_PARAMS(3540000 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8245_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT) MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2) MCFG_SCREEN_PALETTE("palette") @@ -766,12 +766,14 @@ MACHINE_CONFIG_START(g7400_state::g7400) MCFG_PALETTE_ADD("palette", 16) MCFG_PALETTE_INIT_OWNER(g7400_state, g7400) - MCFG_I8243_ADD( "i8243", CONSTANT(0), WRITE8(*this, g7400_state,i8243_port_w)) + I8243(config, m_i8243); + m_i8243->read_handler().set_constant(0); + m_i8243->write_handler().set(FUNC(g7400_state::i8243_port_w)); - MCFG_EF9340_1_ADD( "ef9340_1", 3540000, "screen" ) + MCFG_EF9340_1_ADD("ef9340_1", 3540000, "screen") SPEAKER(config, "mono").front_center(); - MCFG_I8245_ADD( "i8244", 3540000 * 2, "screen", INPUTLINE( "maincpu", 0 ), WRITE16( *this, g7400_state, scanline_postprocess ) ) + MCFG_I8245_ADD("i8244", 3540000 * 2, "screen", INPUTLINE("maincpu", 0), WRITE16(*this, g7400_state, scanline_postprocess)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) odyssey2_cartslot(config); @@ -794,12 +796,12 @@ MACHINE_CONFIG_START(g7400_state::odyssey3) MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(*this, g7400_state, bus_write)) MCFG_MCS48_PORT_T0_IN_CB(READLINE("cartslot", o2_cart_slot_device, t0_read)) MCFG_MCS48_PORT_T1_IN_CB(READLINE(*this, g7400_state, t1_read)) - MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE("i8243", i8243_device, prog_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(m_i8243, i8243_device, prog_w)) MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS( 3540000 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8244_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT ) + MCFG_SCREEN_RAW_PARAMS(3540000 * 2, i8244_device::LINE_CLOCKS, i8244_device::START_ACTIVE_SCAN, i8244_device::END_ACTIVE_SCAN, i8244_device::LINES, i8244_device::START_Y, i8244_device::START_Y + i8244_device::SCREEN_HEIGHT) MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2) MCFG_SCREEN_PALETTE("palette") @@ -807,12 +809,14 @@ MACHINE_CONFIG_START(g7400_state::odyssey3) MCFG_PALETTE_ADD("palette", 16) MCFG_PALETTE_INIT_OWNER(g7400_state, g7400) - MCFG_I8243_ADD( "i8243", CONSTANT(0), WRITE8(*this, g7400_state,i8243_port_w)) + I8243(config, m_i8243); + m_i8243->read_handler().set_constant(0); + m_i8243->write_handler().set(FUNC(g7400_state::i8243_port_w)); - MCFG_EF9340_1_ADD( "ef9340_1", 3540000, "screen" ) + MCFG_EF9340_1_ADD("ef9340_1", 3540000, "screen") SPEAKER(config, "mono").front_center(); - MCFG_I8244_ADD( "i8244", 3540000 * 2, "screen", INPUTLINE( "maincpu", 0 ), WRITE16( *this, g7400_state, scanline_postprocess ) ) + MCFG_I8244_ADD("i8244", 3540000 * 2, "screen", INPUTLINE("maincpu", 0), WRITE16(*this, g7400_state, scanline_postprocess)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) odyssey2_cartslot(config); diff --git a/src/mame/drivers/othello.cpp b/src/mame/drivers/othello.cpp index b0790562582..21b4dd7a93d 100644 --- a/src/mame/drivers/othello.cpp +++ b/src/mame/drivers/othello.cpp @@ -418,7 +418,9 @@ MACHINE_CONFIG_START(othello_state::othello) MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(*this, othello_state, n7751_p2_w)) MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(m_i8243, i8243_device, prog_w)) - MCFG_I8243_ADD(m_i8243, CONSTANT(0), WRITE8(*this, othello_state, n7751_rom_control_w)) + I8243(config, m_i8243); + m_i8243->read_handler().set_constant(0); + m_i8243->write_handler().set(FUNC(othello_state::n7751_rom_control_w)); /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/pc8801.cpp b/src/mame/drivers/pc8801.cpp index fe3444e183c..3a6603dacdc 100644 --- a/src/mame/drivers/pc8801.cpp +++ b/src/mame/drivers/pc8801.cpp @@ -2375,7 +2375,7 @@ MACHINE_CONFIG_START(pc8801_state::pc8801) MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE("fdccpu", INPUT_LINE_IRQ0)) #if USE_PROPER_I8214 - MCFG_I8214_ADD(I8214_TAG, MASTER_CLOCK, pic_intf) + I8214(config, I8214_TAG, MASTER_CLOCK); #endif MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL(32'768), NOOP, NOOP) //MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer") diff --git a/src/mame/drivers/pcipc.cpp b/src/mame/drivers/pcipc.cpp index bfc4bec7796..29b5524545c 100644 --- a/src/mame/drivers/pcipc.cpp +++ b/src/mame/drivers/pcipc.cpp @@ -508,11 +508,14 @@ MACHINE_CONFIG_START(pcipc_state::pcipc) MCFG_DEVICE_ADD( ":pci", PCI_ROOT, 0) MCFG_DEVICE_ADD( ":pci:00.0", I82439HX, 0, "maincpu", 256*1024*1024) - MCFG_DEVICE_ADD( ":pci:07.0", I82371SB_ISA, 0) - MCFG_I82371SB_BOOT_STATE_HOOK(WRITE8(*this, pcipc_state, boot_state_phoenix_ver40_rev6_w)) - MCFG_I82371SB_SMI_CB(INPUTLINE(":maincpu", INPUT_LINE_SMI)) - MCFG_DEVICE_ADD( ":pci:07.1", I82371SB_IDE, 0) - MCFG_I82371SB_IDE_INTERRUPTS(":pci:07.0", i82371sb_isa_device, pc_irq14_w, pc_irq15_w) + + i82371sb_isa_device &isa(I82371SB_ISA(config, ":pci:07.0", 0)); + isa.boot_state_hook().set(FUNC(pcipc_state::boot_state_phoenix_ver40_rev6_w)); + isa.smi().set_inputline(":maincpu", INPUT_LINE_SMI); + + i82371sb_ide_device &ide(I82371SB_IDE(config, ":pci:07.1", 0)); + ide.irq_pri().set(":pci:07.0", FUNC(i82371sb_isa_device::pc_irq14_w)); + ide.irq_sec().set(":pci:07.0", FUNC(i82371sb_isa_device::pc_irq15_w)); // MCFG_DEVICE_ADD( ":pci:12.0", MGA2064W, 0) MCFG_DEVICE_ADD("board4", ISA16_SLOT, 0, "pci:07.0:isabus", isa_internal_devices, "fdc37c93x", true) @@ -542,8 +545,9 @@ MACHINE_CONFIG_START(pcipc_state::pcipctx) MCFG_DEVICE_ADD( ":pci", PCI_ROOT, 0) MCFG_DEVICE_ADD( ":pci:00.0", I82439TX, 0, ":maincpu", 256*1024*1024) - MCFG_DEVICE_ADD( ":pci:07.0", I82371SB_ISA, 0) - MCFG_I82371SB_BOOT_STATE_HOOK(WRITE8(*this, pcipc_state, boot_state_award_w)) + + i82371sb_isa_device &isa(I82371SB_ISA(config, ":pci:07.0", 0)); + isa.boot_state_hook().set(FUNC(pcipc_state::boot_state_award_w)); // MCFG_DEVICE_ADD( ":pci:07.1", IDE_PCI, 0, 0x80867010, 0x03, 0x00000000) MCFG_DEVICE_ADD( ":pci:12.0", MGA2064W, 0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/pokemini.cpp b/src/mame/drivers/pokemini.cpp index f5f6d2ba509..876bf19c340 100644 --- a/src/mame/drivers/pokemini.cpp +++ b/src/mame/drivers/pokemini.cpp @@ -1767,8 +1767,7 @@ MACHINE_CONFIG_START(pokemini_state::pokemini) MCFG_QUANTUM_TIME(attotime::from_hz(60)) - MCFG_I2CMEM_ADD("i2cmem") - MCFG_I2CMEM_DATA_SIZE(0x2000) + I2CMEM(config, "i2cmem", 0).set_data_size(0x2000); /* This still needs to be improved to actually match the hardware */ MCFG_SCREEN_ADD("screen", LCD) diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp index 7c23c8544a0..4e8f52d3d2f 100644 --- a/src/mame/drivers/segas16a.cpp +++ b/src/mame/drivers/segas16a.cpp @@ -1981,7 +1981,9 @@ MACHINE_CONFIG_START(segas16a_state::system16a) MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(*this, segas16a_state, n7751_p2_w)) MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE("n7751_8243", i8243_device, prog_w)) - MCFG_I8243_ADD("n7751_8243", CONSTANT(0), WRITE8(*this, segas16a_state,n7751_rom_offset_w)) + I8243(config, m_n7751_i8243); + m_n7751_i8243->read_handler().set_constant(0); + m_n7751_i8243->write_handler().set(FUNC(segas16a_state::n7751_rom_offset_w)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); diff --git a/src/mame/drivers/supstarf.cpp b/src/mame/drivers/supstarf.cpp index 194f8846d35..938e728e0e6 100644 --- a/src/mame/drivers/supstarf.cpp +++ b/src/mame/drivers/supstarf.cpp @@ -187,13 +187,13 @@ MACHINE_CONFIG_START(supstarf_state::supstarf) MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(*this, supstarf_state, port2_w)) MCFG_MCS48_PORT_T1_IN_CB(READLINE(*this, supstarf_state, phase_detect_r)) - MCFG_DEVICE_ADD("soundlatch1", I8212, 0) - MCFG_I8212_MD_CALLBACK(CONSTANT(0)) - MCFG_I8212_INT_CALLBACK(INPUTLINE("maincpu", I8085_RST55_LINE)) + I8212(config, m_soundlatch[0], 0); + m_soundlatch[0]->md_rd_callback().set_constant(0); + m_soundlatch[0]->int_wr_callback().set_inputline("maincpu", I8085_RST55_LINE); - MCFG_DEVICE_ADD("soundlatch2", I8212, 0) - MCFG_I8212_MD_CALLBACK(CONSTANT(0)) - MCFG_I8212_INT_CALLBACK(INPUTLINE("soundcpu", MCS48_INPUT_IRQ)) + I8212(config, m_soundlatch[1], 0); + m_soundlatch[1]->md_rd_callback().set_constant(0); + m_soundlatch[1]->int_wr_callback().set_inputline("soundcpu", MCS48_INPUT_IRQ); //MCFG_DEVCB_CHAIN_OUTPUT(INPUTLINE("maincpu", I8085_READY_LINE)) SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/twinkle.cpp b/src/mame/drivers/twinkle.cpp index e8cdb594cfb..0ff4e056b1e 100644 --- a/src/mame/drivers/twinkle.cpp +++ b/src/mame/drivers/twinkle.cpp @@ -1143,11 +1143,11 @@ MACHINE_CONFIG_START(twinkle_state::twinklex) MCFG_X76F041_ADD( "security" ) MACHINE_CONFIG_END -MACHINE_CONFIG_START(twinkle_state::twinklei) +void twinkle_state::twinklei(machine_config &config) +{ twinkle(config); - MCFG_I2CMEM_ADD( "security" ) - MCFG_I2CMEM_DATA_SIZE( 0x100 ) -MACHINE_CONFIG_END + I2CMEM(config, "security", 0).set_data_size(0x100); +} static INPUT_PORTS_START( twinkle ) diff --git a/src/mame/drivers/v1050.cpp b/src/mame/drivers/v1050.cpp index 1777f08866b..f80a152f79d 100644 --- a/src/mame/drivers/v1050.cpp +++ b/src/mame/drivers/v1050.cpp @@ -1044,8 +1044,8 @@ MACHINE_CONFIG_START(v1050_state::v1050) v1050_video(config); // devices - MCFG_DEVICE_ADD(UPB8214_TAG, I8214, 16_MHz_XTAL/4) - MCFG_I8214_INT_CALLBACK(WRITELINE(*this, v1050_state, pic_int_w)) + I8214(config, m_pic, 16_MHz_XTAL/4); + m_pic->int_wr_callback().set(FUNC(v1050_state::pic_int_w)); MCFG_DEVICE_ADD(MSM58321RS_TAG, MSM58321, 32.768_kHz_XTAL) MCFG_MSM58321_D0_HANDLER(WRITELINE(*this, v1050_state, rtc_ppi_pa_0_w)) diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp index a51582c960b..d4a8d2a3b1f 100644 --- a/src/mame/drivers/vii.cpp +++ b/src/mame/drivers/vii.cpp @@ -1452,11 +1452,11 @@ MACHINE_CONFIG_START(spg2xx_cart_state::vsmile) MCFG_SOFTWARE_LIST_ADD("cart_list","vsmile_cart") MACHINE_CONFIG_END -MACHINE_CONFIG_START(spg2xx_game_state::batman) +void spg2xx_game_state::batman(machine_config &config) +{ spg2xx_base(config); - MCFG_I2CMEM_ADD("i2cmem") - MCFG_I2CMEM_DATA_SIZE(0x200) -MACHINE_CONFIG_END + I2CMEM(config, "i2cmem", 0).set_data_size(0x200); +} void spg2xx_cart_state::init_vii() diff --git a/src/mame/machine/ms7004.cpp b/src/mame/machine/ms7004.cpp index bbfb59fbfd7..5eb66f2c64f 100644 --- a/src/mame/machine/ms7004.cpp +++ b/src/mame/machine/ms7004.cpp @@ -63,9 +63,11 @@ MACHINE_CONFIG_START(ms7004_device::device_add_mconfig) MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(*this, ms7004_device, p1_w)) MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(*this, ms7004_device, p2_w)) MCFG_MCS48_PORT_T1_IN_CB(READLINE(*this, ms7004_device, t1_r)) - MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE("i8243", i8243_device, prog_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(m_i8243, i8243_device, prog_w)) - MCFG_I8243_ADD("i8243", CONSTANT(0), WRITE8(*this, ms7004_device, i8243_port_w)) + I8243(config, m_i8243); + m_i8243->read_handler().set_constant(0); + m_i8243->write_handler().set(FUNC(ms7004_device::i8243_port_w)); SPEAKER(config, "mono").front_center(); MCFG_DEVICE_ADD(MS7004_SPK_TAG, BEEP, 3250) -- cgit v1.2.3 From b69e80c9f4b079918b8162ffabaf907a34cea3d2 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Wed, 29 Aug 2018 19:07:22 +0200 Subject: i8251: Removed MCFG, nw --- src/devices/bus/ieee488/softbox.cpp | 8 +- src/devices/bus/isa/myb3k_com.cpp | 12 +- src/devices/bus/isa/p1_sound.cpp | 6 +- src/devices/cpu/nec/v53.cpp | 23 ++-- src/devices/machine/i8251.h | 25 ---- src/mame/drivers/alphatro.cpp | 4 +- src/mame/drivers/amust.cpp | 16 +-- src/mame/drivers/att4425.cpp | 8 +- src/mame/drivers/bw2.cpp | 8 +- src/mame/drivers/cgc7900.cpp | 24 ++-- src/mame/drivers/cit101.cpp | 34 ++--- src/mame/drivers/compis.cpp | 8 +- src/mame/drivers/decwritr.cpp | 10 +- src/mame/drivers/duet16.cpp | 10 +- src/mame/drivers/dvk_ksm.cpp | 14 +- src/mame/drivers/einstein.cpp | 8 +- src/mame/drivers/excali64.cpp | 6 +- src/mame/drivers/fb01.cpp | 8 +- src/mame/drivers/fmtowns.cpp | 15 ++- src/mame/drivers/horizon.cpp | 16 +-- src/mame/drivers/ibm6580.cpp | 24 ++-- src/mame/drivers/imds2.cpp | 24 ++-- src/mame/drivers/isbc.cpp | 28 ++-- src/mame/drivers/isbc8010.cpp | 8 +- src/mame/drivers/konin.cpp | 10 +- src/mame/drivers/kyocera.cpp | 8 +- src/mame/drivers/m20.cpp | 16 +-- src/mame/drivers/mbc55x.cpp | 4 +- src/mame/drivers/mc1502.cpp | 14 +- src/mame/drivers/meritum.cpp | 4 +- src/mame/drivers/mfabfz.cpp | 8 +- src/mame/drivers/mice.cpp | 12 +- src/mame/drivers/ms0515.cpp | 24 ++-- src/mame/drivers/nc.cpp | 12 +- src/mame/drivers/ngen.cpp | 16 +-- src/mame/drivers/octopus.cpp | 8 +- src/mame/drivers/okean240.cpp | 8 +- src/mame/drivers/pc100.cpp | 10 +- src/mame/drivers/pc8401a.cpp | 16 +-- src/mame/drivers/pc8801.cpp | 6 +- src/mame/drivers/peoplepc.cpp | 8 +- src/mame/drivers/pk8020.cpp | 10 +- src/mame/drivers/pmd85.cpp | 246 ++++++++++++++++++------------------ src/mame/drivers/poly88.cpp | 6 +- src/mame/drivers/qtsbc.cpp | 4 +- src/mame/drivers/rainbow.cpp | 10 +- src/mame/drivers/sage2.cpp | 34 ++--- src/mame/drivers/scopus.cpp | 8 +- src/mame/drivers/sdk80.cpp | 8 +- src/mame/drivers/sdk86.cpp | 8 +- src/mame/drivers/seattlecmp.cpp | 12 +- src/mame/drivers/selz80.cpp | 8 +- src/mame/drivers/sg1000.cpp | 8 +- src/mame/drivers/sm7238.cpp | 20 +-- src/mame/drivers/softbox.cpp | 8 +- src/mame/drivers/sys9002.cpp | 16 +-- src/mame/drivers/tandy2k.cpp | 12 +- src/mame/drivers/tsispch.cpp | 14 +- src/mame/drivers/v102.cpp | 4 +- src/mame/drivers/v1050.cpp | 18 +-- src/mame/drivers/v550.cpp | 12 +- src/mame/drivers/vector4.cpp | 24 ++-- src/mame/drivers/vixen.cpp | 12 +- src/mame/drivers/votrpss.cpp | 8 +- src/mame/drivers/vt240.cpp | 15 +-- src/mame/drivers/xor100.cpp | 26 ++-- src/mame/includes/pmd85.h | 2 +- 67 files changed, 533 insertions(+), 551 deletions(-) diff --git a/src/devices/bus/ieee488/softbox.cpp b/src/devices/bus/ieee488/softbox.cpp index 03af51971de..6529282f2b3 100644 --- a/src/devices/bus/ieee488/softbox.cpp +++ b/src/devices/bus/ieee488/softbox.cpp @@ -239,10 +239,10 @@ MACHINE_CONFIG_START(softbox_device::device_add_mconfig) MCFG_DEVICE_IO_MAP(softbox_io) // devices - MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) + i8251_device &i8251(I8251(config, I8251_TAG, 0)); + i8251.txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + i8251.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + i8251.rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_rxd)) diff --git a/src/devices/bus/isa/myb3k_com.cpp b/src/devices/bus/isa/myb3k_com.cpp index 1a281971c9c..fdc0a527c6f 100644 --- a/src/devices/bus/isa/myb3k_com.cpp +++ b/src/devices/bus/isa/myb3k_com.cpp @@ -32,12 +32,12 @@ DEFINE_DEVICE_TYPE(ISA8_MYB3K_COM, isa8_myb3k_com_device, "isa8_myb3k_com", "ADP // device_add_mconfig - add device configuration //------------------------------------------------- MACHINE_CONFIG_START(isa8_myb3k_com_device::device_add_mconfig) - MCFG_DEVICE_ADD( "usart", I8251, XTAL(15'974'400) / 8 ) - MCFG_I8251_TXD_HANDLER(WRITELINE("com1", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("com1", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("com1", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, isa8_myb3k_com_device, com_int_rx)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, isa8_myb3k_com_device, com_int_tx)) + I8251( config, m_usart, XTAL(15'974'400) / 8 ); + m_usart->txd_handler().set("com1", FUNC(rs232_port_device::write_txd)); + m_usart->dtr_handler().set("com1", FUNC(rs232_port_device::write_dtr)); + m_usart->rts_handler().set("com1", FUNC(rs232_port_device::write_rts)); + m_usart->rxrdy_handler().set(FUNC(isa8_myb3k_com_device::com_int_rx)); + m_usart->txrdy_handler().set(FUNC(isa8_myb3k_com_device::com_int_tx)); MCFG_DEVICE_ADD( "com1", RS232_PORT, isa8_myb3k_com, nullptr ) MCFG_RS232_RXD_HANDLER(WRITELINE("usart", i8251_device, write_rxd)) diff --git a/src/devices/bus/isa/p1_sound.cpp b/src/devices/bus/isa/p1_sound.cpp index ee443231087..62b0bbca1d6 100644 --- a/src/devices/bus/isa/p1_sound.cpp +++ b/src/devices/bus/isa/p1_sound.cpp @@ -30,9 +30,9 @@ DEFINE_DEVICE_TYPE(P1_SOUND, p1_sound_device, "p1_sound", "Poisk-1 sound card (B //------------------------------------------------- MACHINE_CONFIG_START(p1_sound_device::device_add_mconfig) - MCFG_DEVICE_ADD("midi", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("mdout", midi_port_device, write_txd)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(":isa", isa8_device, irq3_w)) + I8251(config, m_midi, 0); + m_midi->txd_handler().set("mdout", FUNC(midi_port_device::write_txd)); + m_midi->rxrdy_handler().set(":isa", FUNC(isa8_device::irq3_w)); MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin") MCFG_MIDI_RX_HANDLER(WRITELINE("midi", i8251_device, write_rxd)) diff --git a/src/devices/cpu/nec/v53.cpp b/src/devices/cpu/nec/v53.cpp index 676efd675e5..82b811c873a 100644 --- a/src/devices/cpu/nec/v53.cpp +++ b/src/devices/cpu/nec/v53.cpp @@ -504,8 +504,8 @@ WRITE_LINE_MEMBER(v53_base_device::internal_irq_w) } -MACHINE_CONFIG_START(v53_base_device::device_add_mconfig) - +void v53_base_device::device_add_mconfig(machine_config &config) +{ PIT8254(config, m_v53tcu, 0); // functionality identical to uPD71054 m_v53tcu->set_clk<0>(16000000); // manual implicitly claims that these runs at same speed as the CPU m_v53tcu->set_clk<1>(16000000); @@ -537,16 +537,15 @@ MACHINE_CONFIG_START(v53_base_device::device_add_mconfig) m_v53icu->in_sp_callback().set_constant(1); m_v53icu->read_slave_ack_callback().set(FUNC(v53_base_device::get_pic_ack)); - MCFG_DEVICE_ADD("v53scu", V53_SCU, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(*this, v53_base_device, scu_txd_trampoline_cb)) - MCFG_I8251_DTR_HANDLER(WRITELINE(*this, v53_base_device, scu_dtr_trampoline_cb)) - MCFG_I8251_RTS_HANDLER(WRITELINE(*this, v53_base_device, scu_rts_trampoline_cb)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, v53_base_device,scu_rxrdy_trampoline_cb)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, v53_base_device,scu_txrdy_trampoline_cb)) - MCFG_I8251_TXEMPTY_HANDLER(WRITELINE(*this, v53_base_device, scu_txempty_trampoline_cb)) - MCFG_I8251_SYNDET_HANDLER(WRITELINE(*this, v53_base_device, scu_syndet_trampoline_cb)) - -MACHINE_CONFIG_END + V53_SCU(config, m_v53scu, 0); + m_v53scu->txd_handler().set(FUNC(v53_base_device::scu_txd_trampoline_cb)); + m_v53scu->dtr_handler().set(FUNC(v53_base_device::scu_dtr_trampoline_cb)); + m_v53scu->rts_handler().set(FUNC(v53_base_device::scu_rts_trampoline_cb)); + m_v53scu->rxrdy_handler().set(FUNC(v53_base_device::scu_rxrdy_trampoline_cb)); + m_v53scu->txrdy_handler().set(FUNC(v53_base_device::scu_txrdy_trampoline_cb)); + m_v53scu->txempty_handler().set(FUNC(v53_base_device::scu_txempty_trampoline_cb)); + m_v53scu->syndet_handler().set(FUNC(v53_base_device::scu_syndet_trampoline_cb)); +} v53_base_device::v53_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : diff --git a/src/devices/machine/i8251.h b/src/devices/machine/i8251.h index 4eab12602d9..2cf0e67cea6 100644 --- a/src/devices/machine/i8251.h +++ b/src/devices/machine/i8251.h @@ -15,31 +15,6 @@ #include "diserial.h" -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_I8251_TXD_HANDLER(_devcb) \ - downcast(*device).set_txd_handler(DEVCB_##_devcb); - -#define MCFG_I8251_DTR_HANDLER(_devcb) \ - downcast(*device).set_dtr_handler(DEVCB_##_devcb); - -#define MCFG_I8251_RTS_HANDLER(_devcb) \ - downcast(*device).set_rts_handler(DEVCB_##_devcb); - -#define MCFG_I8251_RXRDY_HANDLER(_devcb) \ - downcast(*device).set_rxrdy_handler(DEVCB_##_devcb); - -#define MCFG_I8251_TXRDY_HANDLER(_devcb) \ - downcast(*device).set_txrdy_handler(DEVCB_##_devcb); - -#define MCFG_I8251_TXEMPTY_HANDLER(_devcb) \ - downcast(*device).set_txempty_handler(DEVCB_##_devcb); - -#define MCFG_I8251_SYNDET_HANDLER(_devcb) \ - downcast(*device).set_syndet_handler(DEVCB_##_devcb); - class i8251_device : public device_t, public device_serial_interface { diff --git a/src/mame/drivers/alphatro.cpp b/src/mame/drivers/alphatro.cpp index caf5ac6d9e0..bfbf7c899c8 100644 --- a/src/mame/drivers/alphatro.cpp +++ b/src/mame/drivers/alphatro.cpp @@ -743,8 +743,8 @@ MACHINE_CONFIG_START(alphatro_state::alphatro) MCFG_MC6845_CHAR_WIDTH(8) MCFG_MC6845_UPDATE_ROW_CB(alphatro_state, crtc_update_row) - MCFG_DEVICE_ADD("usart", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(*this, alphatro_state, txdata_callback)) + I8251(config, m_usart, 0); + m_usart->txd_handler().set(FUNC(alphatro_state::txdata_callback)); clock_device &usart_clock(CLOCK(config, "usart_clock", 19218)); // 19218 to load a real tape, 19222 to load a tape made by this driver usart_clock.signal_handler().set(m_usart, FUNC(i8251_device::write_txc)); diff --git a/src/mame/drivers/amust.cpp b/src/mame/drivers/amust.cpp index 9b88907458d..3b0f301f46d 100644 --- a/src/mame/drivers/amust.cpp +++ b/src/mame/drivers/amust.cpp @@ -419,20 +419,20 @@ MACHINE_CONFIG_START(amust_state::amust) uart_clock.signal_handler().set("uart1", FUNC(i8251_device::write_txc)); uart_clock.signal_handler().append("uart1", FUNC(i8251_device::write_rxc)); - MCFG_DEVICE_ADD("uart1", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) + i8251_device &uart1(I8251(config, "uart1", 0)); + uart1.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + uart1.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + uart1.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "keyboard") MCFG_RS232_RXD_HANDLER(WRITELINE("uart1", i8251_device, write_rxd)) MCFG_RS232_CTS_HANDLER(WRITELINE("uart1", i8251_device, write_cts)) MCFG_RS232_DSR_HANDLER(WRITELINE("uart1", i8251_device, write_dsr)) - MCFG_DEVICE_ADD("uart2", I8251, 0) - //MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - //MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - //MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) + I8251(config, "uart2", 0); + //uart2.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + //uart2.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + //uart2.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("pit", PIT8253, 0) diff --git a/src/mame/drivers/att4425.cpp b/src/mame/drivers/att4425.cpp index a73ea90542f..283524085cf 100644 --- a/src/mame/drivers/att4425.cpp +++ b/src/mame/drivers/att4425.cpp @@ -286,10 +286,10 @@ MACHINE_CONFIG_START(att4425_state::att4425) MCFG_DEVICE_ADD("line_clock", CLOCK, 9600*64) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, att4425_state, write_line_clock)) - MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) + I8251(config, m_i8251, 0); + m_i8251->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_i8251->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + m_i8251->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "keyboard") MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/bw2.cpp b/src/mame/drivers/bw2.cpp index 82d84f08943..8a1e68e9078 100644 --- a/src/mame/drivers/bw2.cpp +++ b/src/mame/drivers/bw2.cpp @@ -584,10 +584,10 @@ MACHINE_CONFIG_START(bw2_state::bw2) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) - MCFG_DEVICE_ADD(m_uart, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) + I8251(config, m_uart, 0); + m_uart->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + m_uart->dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + m_uart->rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, i8251_device, write_rxd)) diff --git a/src/mame/drivers/cgc7900.cpp b/src/mame/drivers/cgc7900.cpp index 6547c5312f5..6b02457a645 100644 --- a/src/mame/drivers/cgc7900.cpp +++ b/src/mame/drivers/cgc7900.cpp @@ -500,23 +500,23 @@ MACHINE_CONFIG_START(cgc7900_state::cgc7900) k1135a.ft_handler().set(m_i8251_1, FUNC(i8251_device::write_txc)); k1135a.ft_handler().append(m_i8251_1, FUNC(i8251_device::write_rxc)); - MCFG_DEVICE_ADD(INS8251_0_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, cgc7900_state, irq<0xf>)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, cgc7900_state, irq<0x3>)) + I8251(config, m_i8251_0, 0); + m_i8251_0->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_i8251_0->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + m_i8251_0->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + m_i8251_0->rxrdy_handler().set(FUNC(cgc7900_state::irq<0xf>)); + m_i8251_0->txrdy_handler().set(FUNC(cgc7900_state::irq<0x3>)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "null_modem") MCFG_RS232_RXD_HANDLER(WRITELINE(INS8251_0_TAG, i8251_device, write_rxd)) MCFG_RS232_DSR_HANDLER(WRITELINE(INS8251_0_TAG, i8251_device, write_dsr)) - MCFG_DEVICE_ADD(INS8251_1_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs449", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs449", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs449", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, cgc7900_state, irq<0x8>)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, cgc7900_state, irq<0x1>)) + I8251(config, m_i8251_1, 0); + m_i8251_1->txd_handler().set("rs449", FUNC(rs232_port_device::write_txd)); + m_i8251_1->dtr_handler().set("rs449", FUNC(rs232_port_device::write_dtr)); + m_i8251_1->rts_handler().set("rs449", FUNC(rs232_port_device::write_rts)); + m_i8251_1->rxrdy_handler().set(FUNC(cgc7900_state::irq<0x8>)); + m_i8251_1->txrdy_handler().set(FUNC(cgc7900_state::irq<0x1>)); MCFG_DEVICE_ADD("rs449", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(INS8251_1_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/cit101.cpp b/src/mame/drivers/cit101.cpp index b7ed97eb12c..62848c4adbd 100644 --- a/src/mame/drivers/cit101.cpp +++ b/src/mame/drivers/cit101.cpp @@ -72,6 +72,8 @@ public: , m_maincpu(*this, "maincpu") , m_screen(*this, "screen") , m_nvr(*this, "nvr") + , m_comuart(*this, "comuart") + , m_kbduart(*this, "kbduart") , m_chargen(*this, "chargen") , m_mainram(*this, "mainram") , m_extraram(*this, "extraram") @@ -109,6 +111,8 @@ private: required_device m_maincpu; required_device m_screen; required_device m_nvr; + required_device m_comuart; + required_device m_kbduart; required_region_ptr m_chargen; required_shared_ptr m_mainram; required_shared_ptr m_extraram; @@ -117,8 +121,8 @@ private: void cit101_state::machine_start() { - subdevice("comuart")->write_cts(0); - subdevice("kbduart")->write_cts(0); + m_comuart->write_cts(0); + m_kbduart->write_cts(0); m_brightness = 0xff; @@ -344,12 +348,12 @@ MACHINE_CONFIG_START(cit101_state::cit101) MCFG_SCREEN_UPDATE_DRIVER(cit101_state, screen_update) MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", I8085_RST75_LINE)) - MCFG_DEVICE_ADD("comuart", I8251, 6.144_MHz_XTAL / 2) - MCFG_I8251_TXD_HANDLER(WRITELINE("comm", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("comm", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("comm", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("uartint", input_merger_device, in_w<0>)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE("uartint", input_merger_device, in_w<2>)) + I8251(config, m_comuart, 6.144_MHz_XTAL / 2); + m_comuart->txd_handler().set("comm", FUNC(rs232_port_device::write_txd)); + m_comuart->dtr_handler().set("comm", FUNC(rs232_port_device::write_dtr)); + m_comuart->rts_handler().set("comm", FUNC(rs232_port_device::write_rts)); + m_comuart->rxrdy_handler().set("uartint", FUNC(input_merger_device::in_w<0>)); + m_comuart->txrdy_handler().set("uartint", FUNC(input_merger_device::in_w<2>)); MCFG_DEVICE_ADD("comm", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("comuart", i8251_device, write_rxd)) @@ -357,10 +361,10 @@ MACHINE_CONFIG_START(cit101_state::cit101) // CTS can be disabled in SET-UP Mode C // DSR, CD, SI, RI are examined only during the modem test, not "always ignored" as the User's Manual claims - MCFG_DEVICE_ADD("auxuart", I8251, 6.144_MHz_XTAL / 2) - MCFG_I8251_TXD_HANDLER(WRITELINE("printer", rs232_port_device, write_txd)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("uartint", input_merger_device, in_w<1>)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE("uartint", input_merger_device, in_w<3>)) + i8251_device &auxuart(I8251(config, "auxuart", 6.144_MHz_XTAL / 2)); + auxuart.txd_handler().set("printer", FUNC(rs232_port_device::write_txd)); + auxuart.rxrdy_handler().set("uartint", FUNC(input_merger_device::in_w<1>)); + auxuart.txrdy_handler().set("uartint", FUNC(input_merger_device::in_w<3>)); MCFG_DEVICE_ADD("printer", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("auxuart", i8251_device, write_rxd)) @@ -369,9 +373,9 @@ MACHINE_CONFIG_START(cit101_state::cit101) MCFG_INPUT_MERGER_ANY_HIGH("uartint") MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", I8085_RST55_LINE)) - MCFG_DEVICE_ADD("kbduart", I8251, 6.144_MHz_XTAL / 2) - MCFG_I8251_TXD_HANDLER(WRITELINE("keyboard", cit101_hle_keyboard_device, write_rxd)) - MCFG_I8251_RXRDY_HANDLER(INPUTLINE("maincpu", I8085_RST65_LINE)) + I8251(config, m_kbduart, 6.144_MHz_XTAL / 2); + m_kbduart->txd_handler().set("keyboard", FUNC(cit101_hle_keyboard_device::write_rxd)); + m_kbduart->rxrdy_handler().set_inputline("maincpu", I8085_RST65_LINE); MCFG_DEVICE_ADD("keyboard", CIT101_HLE_KEYBOARD, 0) MCFG_CIT101_HLE_KEYBOARD_TXD_CALLBACK(WRITELINE("kbduart", i8251_device, write_rxd)) diff --git a/src/mame/drivers/compis.cpp b/src/mame/drivers/compis.cpp index 70c73817d0e..69a3fadcd65 100644 --- a/src/mame/drivers/compis.cpp +++ b/src/mame/drivers/compis.cpp @@ -779,10 +779,10 @@ MACHINE_CONFIG_START(compis_state::compis) MCFG_I8255_IN_PORTB_CB(READ8(*this, compis_state, ppi_pb_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, compis_state, ppi_pc_w)) - MCFG_DEVICE_ADD(I8251A_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(COMPIS_KEYBOARD_TAG, compis_keyboard_device, si_w)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(I80130_TAG, i80130_device, ir2_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(I80186_TAG, i80186_cpu_device, int1_w)) + I8251(config, m_uart, 0); + m_uart->txd_handler().set(COMPIS_KEYBOARD_TAG, FUNC(compis_keyboard_device::si_w)); + m_uart->rxrdy_handler().set(I80130_TAG, FUNC(i80130_device::ir2_w)); + m_uart->txrdy_handler().set(I80186_TAG, FUNC(i80186_cpu_device::int1_w)); MCFG_DEVICE_ADD(COMPIS_KEYBOARD_TAG, COMPIS_KEYBOARD, 0) MCFG_COMPIS_KEYBOARD_OUT_TX_HANDLER(WRITELINE(I8251A_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/decwritr.cpp b/src/mame/drivers/decwritr.cpp index afc6b9dff27..46c0f0be4f7 100644 --- a/src/mame/drivers/decwritr.cpp +++ b/src/mame/drivers/decwritr.cpp @@ -447,12 +447,12 @@ MACHINE_CONFIG_START(decwriter_state::la120) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* i8251 */ - MCFG_DEVICE_ADD("usart", I8251, XTAL(18'000'000) / 9) + I8251(config, "usart", XTAL(18'000'000) / 9); /* - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("mainint", input_merger_device, in_w<1>)) + usart.txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + usart.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + usart.rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); + usart.rxrdy_handler().set("mainint", FUNC(input_merger_device::in_w<1>)); MCFG_INPUT_MERGER_ANY_HIGH("mainint") MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", 0)) diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp index 9908e3eab07..382be0445b9 100644 --- a/src/mame/drivers/duet16.cpp +++ b/src/mame/drivers/duet16.cpp @@ -391,11 +391,11 @@ MACHINE_CONFIG_START(duet16_state::duet16) upd7201_new_device& sio(UPD7201_NEW(config, "sio", 8_MHz_XTAL / 2)); sio.out_int_callback().set("pic", FUNC(pic8259_device::ir1_w)); // INT5 - MCFG_DEVICE_ADD("kbusart", I8251, 8_MHz_XTAL / 4) - MCFG_I8251_TXD_HANDLER(WRITELINE("kbd", rs232_port_device, write_txd)) - MCFG_I8251_RTS_HANDLER(WRITELINE("kbusart", i8251_device, write_cts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("kbint", input_merger_device, in_w<0>)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE("kbint", input_merger_device, in_w<1>)) + i8251_device &kbusart(I8251(config, "kbusart", 8_MHz_XTAL / 4)); + kbusart.txd_handler().set("kbd", FUNC(rs232_port_device::write_txd)); + kbusart.rts_handler().set("kbusart", FUNC(i8251_device::write_cts)); + kbusart.rxrdy_handler().set("kbint", FUNC(input_merger_device::in_w<0>)); + kbusart.txrdy_handler().set("kbint", FUNC(input_merger_device::in_w<1>)); MCFG_DEVICE_ADD("kbd", RS232_PORT, duet16_keyboard_devices, "keyboard") MCFG_RS232_RXD_HANDLER(WRITELINE("kbusart", i8251_device, write_rxd)) diff --git a/src/mame/drivers/dvk_ksm.cpp b/src/mame/drivers/dvk_ksm.cpp index 9d0d30c5f88..b3b62ea0ef0 100644 --- a/src/mame/drivers/dvk_ksm.cpp +++ b/src/mame/drivers/dvk_ksm.cpp @@ -448,9 +448,9 @@ MACHINE_CONFIG_START(ksm_state::ksm) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, ksm_state, ksm_ppi_portc_w)) // D42 - serial connection to host - MCFG_DEVICE_ADD( "i8251line", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir3_w)) + I8251(config, m_i8251line, 0); + m_i8251line->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_i8251line->rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir3_w)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "null_modem") MCFG_RS232_RXD_HANDLER(WRITELINE("i8251line", i8251_device, write_rxd)) @@ -458,10 +458,10 @@ MACHINE_CONFIG_START(ksm_state::ksm) MCFG_RS232_DSR_HANDLER(WRITELINE("i8251line", i8251_device, write_dsr)) // D41 - serial connection to MS7004 keyboard - MCFG_DEVICE_ADD( "i8251kbd", I8251, 0) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir1_w)) - MCFG_I8251_RTS_HANDLER(WRITELINE(*this, ksm_state, write_brga)) - MCFG_I8251_DTR_HANDLER(WRITELINE(*this, ksm_state, write_brgb)) + I8251(config, m_i8251kbd, 0); + m_i8251kbd->rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir1_w)); + m_i8251kbd->rts_handler().set(FUNC(ksm_state::write_brga)); + m_i8251kbd->dtr_handler().set(FUNC(ksm_state::write_brgb)); MCFG_DEVICE_ADD("ms7004", MS7004, 0) MCFG_MS7004_TX_HANDLER(WRITELINE("i8251kbd", i8251_device, write_rxd)) diff --git a/src/mame/drivers/einstein.cpp b/src/mame/drivers/einstein.cpp index ce680ac2deb..199a98a816b 100644 --- a/src/mame/drivers/einstein.cpp +++ b/src/mame/drivers/einstein.cpp @@ -647,10 +647,10 @@ MACHINE_CONFIG_START(einstein_state::einstein) MCFG_TIMER_DRIVER_ADD("strobe", einstein_state, strobe_callback) // uart - MCFG_DEVICE_ADD(IC_I060, I8251, XTAL_X002 / 4) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) + i8251_device &ic_i060(I8251(config, IC_I060, XTAL_X002 / 4)); + ic_i060.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + ic_i060.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + ic_i060.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); // rs232 port MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) diff --git a/src/mame/drivers/excali64.cpp b/src/mame/drivers/excali64.cpp index 839da6a9652..fd77b9c7b63 100644 --- a/src/mame/drivers/excali64.cpp +++ b/src/mame/drivers/excali64.cpp @@ -560,9 +560,9 @@ MACHINE_CONFIG_START(excali64_state::excali64) MCFG_MACHINE_RESET_OVERRIDE(excali64_state, excali64) - MCFG_DEVICE_ADD("uart", I8251, 0) - //MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - //MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) + I8251(config, "uart", 0); + //uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + //uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("pit", PIT8253, 0) MCFG_PIT8253_CLK0(16_MHz_XTAL / 16) /* Timer 0: tone gen for speaker */ diff --git a/src/mame/drivers/fb01.cpp b/src/mame/drivers/fb01.cpp index 5f12c6d18b1..fc1834ccb0a 100644 --- a/src/mame/drivers/fb01.cpp +++ b/src/mame/drivers/fb01.cpp @@ -203,10 +203,10 @@ MACHINE_CONFIG_START(fb01_state::fb01) MCFG_HD44780_LCD_SIZE(2, 8) // 2x8 displayed as 1x16 MCFG_HD44780_PIXEL_UPDATE_CB(fb01_state,fb01_pixel_update) - MCFG_DEVICE_ADD("upd71051", I8251, XTAL(4'000'000)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, fb01_state, upd71051_rxrdy_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, fb01_state, upd71051_txrdy_w)) - MCFG_I8251_TXD_HANDLER(WRITELINE("mdout", midi_port_device, write_txd)) + I8251(config, m_upd71051, XTAL(4'000'000)); + m_upd71051->rxrdy_handler().set(FUNC(fb01_state::upd71051_rxrdy_w)); + m_upd71051->txrdy_handler().set(FUNC(fb01_state::upd71051_txrdy_w)); + m_upd71051->txd_handler().set("mdout", FUNC(midi_port_device::write_txd)); MCFG_DEVICE_ADD("usart_clock", CLOCK, XTAL(4'000'000) / 8) // 500KHz MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, fb01_state, write_usart_clock)) diff --git a/src/mame/drivers/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp index cfec592dbca..3f9d83ac390 100644 --- a/src/mame/drivers/fmtowns.cpp +++ b/src/mame/drivers/fmtowns.cpp @@ -2861,13 +2861,14 @@ MACHINE_CONFIG_START(towns_state::towns_base) //MCFG_VIDEO_START_OVERRIDE(towns_state,towns) - MCFG_DEVICE_ADD("i8251", I8251, 0) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, towns_state, towns_rxrdy_irq)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, towns_state, towns_txrdy_irq)) - MCFG_I8251_SYNDET_HANDLER(WRITELINE(*this, towns_state, towns_syndet_irq)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232c", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232c", rs232_port_device, write_rts)) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232c", rs232_port_device, write_txd)) + I8251(config, m_i8251, 0); + m_i8251->rxrdy_handler().set(FUNC(towns_state::towns_rxrdy_irq)); + m_i8251->txrdy_handler().set(FUNC(towns_state::towns_txrdy_irq)); + m_i8251->syndet_handler().set(FUNC(towns_state::towns_syndet_irq)); + m_i8251->dtr_handler().set("rs232c", FUNC(rs232_port_device::write_dtr)); + m_i8251->rts_handler().set("rs232c", FUNC(rs232_port_device::write_rts)); + m_i8251->txd_handler().set("rs232c", FUNC(rs232_port_device::write_txd)); + MCFG_DEVICE_ADD("rs232c", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("i8251",i8251_device, write_rxd)) MCFG_RS232_DSR_HANDLER(WRITELINE("i8251",i8251_device, write_dsr)) diff --git a/src/mame/drivers/horizon.cpp b/src/mame/drivers/horizon.cpp index 1c2691ef90a..f5e47dfc061 100644 --- a/src/mame/drivers/horizon.cpp +++ b/src/mame/drivers/horizon.cpp @@ -186,20 +186,20 @@ MACHINE_CONFIG_START(horizon_state::horizon) MCFG_DEVICE_IO_MAP(horizon_io) // devices - MCFG_DEVICE_ADD(I8251_L_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + I8251(config, m_usart_l, 0); + m_usart_l->txd_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd)); + m_usart_l->dtr_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr)); + m_usart_l->rts_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_L_TAG, i8251_device, write_rxd)) MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_L_TAG, i8251_device, write_dsr)) MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal) - MCFG_DEVICE_ADD(I8251_R_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + I8251(config, m_usart_r, 0); + m_usart_r->txd_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd)); + m_usart_r->dtr_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_dtr)); + m_usart_r->rts_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_R_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/ibm6580.cpp b/src/mame/drivers/ibm6580.cpp index 3e0590508ac..bc441e2de96 100644 --- a/src/mame/drivers/ibm6580.cpp +++ b/src/mame/drivers/ibm6580.cpp @@ -933,24 +933,24 @@ MACHINE_CONFIG_START(ibm6580_state::ibm6580) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats) - MCFG_DEVICE_ADD( "upd8251a", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232a", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232a", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232a", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir2_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir2_w)) + i8251_device &upd8251a(I8251(config, "upd8251a", 0)); + upd8251a.txd_handler().set("rs232a", FUNC(rs232_port_device::write_txd)); + upd8251a.dtr_handler().set("rs232a", FUNC(rs232_port_device::write_dtr)); + upd8251a.rts_handler().set("rs232a", FUNC(rs232_port_device::write_rts)); + upd8251a.rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir2_w)); + upd8251a.txrdy_handler().set("pic8259", FUNC(pic8259_device::ir2_w)); MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("upd8251a", i8251_device, write_rxd)) MCFG_RS232_DSR_HANDLER(WRITELINE("upd8251a", i8251_device, write_dsr)) MCFG_RS232_CTS_HANDLER(WRITELINE("upd8251a", i8251_device, write_cts)) - MCFG_DEVICE_ADD( "upd8251b", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232b", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232b", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232b", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir2_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir2_w)) + i8251_device &upd8251b(I8251(config, "upd8251b", 0)); + upd8251b.txd_handler().set("rs232b", FUNC(rs232_port_device::write_txd)); + upd8251b.dtr_handler().set("rs232b", FUNC(rs232_port_device::write_dtr)); + upd8251b.rts_handler().set("rs232b", FUNC(rs232_port_device::write_rts)); + upd8251b.rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir2_w)); + upd8251b.txrdy_handler().set("pic8259", FUNC(pic8259_device::ir2_w)); MCFG_DEVICE_ADD("rs232b", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("upd8251b", i8251_device, write_rxd)) diff --git a/src/mame/drivers/imds2.cpp b/src/mame/drivers/imds2.cpp index c9bb9ef61e3..99c86a89f0c 100644 --- a/src/mame/drivers/imds2.cpp +++ b/src/mame/drivers/imds2.cpp @@ -781,18 +781,18 @@ MACHINE_CONFIG_START(imds2_state::imds2) MCFG_PIT8253_OUT1_HANDLER(WRITELINE(*this, imds2_state , imds2_baud_clk_1_w)) MCFG_PIT8253_OUT2_HANDLER(WRITELINE("ipclocpic" , pic8259_device , ir4_w)) - MCFG_DEVICE_ADD("ipcusart0" , I8251 , 0) - MCFG_I8251_RTS_HANDLER(WRITELINE("ipcusart0" , i8251_device , write_cts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("ipclocpic" , pic8259_device , ir0_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE("ipclocpic" , pic8259_device , ir1_w)) - MCFG_I8251_TXD_HANDLER(WRITELINE("serial0" , rs232_port_device , write_txd)) - - MCFG_DEVICE_ADD("ipcusart1" , I8251 , 0) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("ipclocpic" , pic8259_device , ir2_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE("ipclocpic" , pic8259_device , ir3_w)) - MCFG_I8251_TXD_HANDLER(WRITELINE("serial1" , rs232_port_device , write_txd)) - MCFG_I8251_RTS_HANDLER(WRITELINE("serial1" , rs232_port_device , write_rts)) - MCFG_I8251_DTR_HANDLER(WRITELINE("serial1" , rs232_port_device , write_dtr)) + I8251(config , m_ipcusart0 , 0); + m_ipcusart0->rts_handler().set("ipcusart0" , FUNC(i8251_device::write_cts)); + m_ipcusart0->rxrdy_handler().set("ipclocpic" , FUNC(pic8259_device::ir0_w)); + m_ipcusart0->txrdy_handler().set("ipclocpic" , FUNC(pic8259_device::ir1_w)); + m_ipcusart0->txd_handler().set("serial0" , FUNC(rs232_port_device::write_txd)); + + I8251(config , m_ipcusart1 , 0); + m_ipcusart1->rxrdy_handler().set("ipclocpic" , FUNC(pic8259_device::ir2_w)); + m_ipcusart1->txrdy_handler().set("ipclocpic" , FUNC(pic8259_device::ir3_w)); + m_ipcusart1->txd_handler().set("serial1" , FUNC(rs232_port_device::write_txd)); + m_ipcusart1->rts_handler().set("serial1" , FUNC(rs232_port_device::write_rts)); + m_ipcusart1->dtr_handler().set("serial1" , FUNC(rs232_port_device::write_dtr)); MCFG_DEVICE_ADD("serial0" , RS232_PORT, default_rs232_devices , nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("ipcusart0" , i8251_device , write_rxd)) diff --git a/src/mame/drivers/isbc.cpp b/src/mame/drivers/isbc.cpp index 7b10f99a956..19fc24b10e0 100644 --- a/src/mame/drivers/isbc.cpp +++ b/src/mame/drivers/isbc.cpp @@ -344,17 +344,17 @@ MACHINE_CONFIG_START(isbc_state::isbc86) MCFG_DEVICE_ADD("ppi", I8255A, 0) - MCFG_DEVICE_ADD("uart8251", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic_0", pic8259_device, ir6_w)) + I8251(config, m_uart8251, 0); + m_uart8251->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_uart8251->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + m_uart8251->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + m_uart8251->rxrdy_handler().set("pic_0", FUNC(pic8259_device::ir6_w)); /* video hardware */ MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE("uart8251", i8251_device, write_rxd)) - MCFG_RS232_CTS_HANDLER(WRITELINE("uart8251", i8251_device, write_cts)) - MCFG_RS232_DSR_HANDLER(WRITELINE("uart8251", i8251_device, write_dsr)) + MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart8251, i8251_device, write_rxd)) + MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart8251, i8251_device, write_cts)) + MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart8251, i8251_device, write_dsr)) MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", isbc86_terminal) MACHINE_CONFIG_END @@ -377,12 +377,12 @@ MACHINE_CONFIG_START(isbc_state::rpc86) MCFG_DEVICE_ADD("ppi", I8255A, 0) - MCFG_DEVICE_ADD("uart8251", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic_0", pic8259_device, ir6_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE("pic_0", pic8259_device, ir7_w)) + I8251(config, m_uart8251, 0); + m_uart8251->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_uart8251->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + m_uart8251->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + m_uart8251->rxrdy_handler().set("pic_0", FUNC(pic8259_device::ir6_w)); + m_uart8251->txrdy_handler().set("pic_0", FUNC(pic8259_device::ir7_w)); /* video hardware */ MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") diff --git a/src/mame/drivers/isbc8010.cpp b/src/mame/drivers/isbc8010.cpp index 8073f8cdedc..0d54771f6df 100644 --- a/src/mame/drivers/isbc8010.cpp +++ b/src/mame/drivers/isbc8010.cpp @@ -178,10 +178,10 @@ MACHINE_CONFIG_START(isbc8010_state::isbc8010) MCFG_DEVICE_PROGRAM_MAP(isbc8010_mem) MCFG_DEVICE_IO_MAP(isbc8010_io) - MCFG_DEVICE_ADD(I8251A_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) + I8251(config, m_usart, 0); + m_usart->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + m_usart->dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + m_usart->rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(I8255A_1_TAG, I8255A, 0) MCFG_DEVICE_ADD(I8255A_2_TAG, I8255A, 0) diff --git a/src/mame/drivers/konin.cpp b/src/mame/drivers/konin.cpp index 51f517c0dda..ae2c597866b 100644 --- a/src/mame/drivers/konin.cpp +++ b/src/mame/drivers/konin.cpp @@ -160,11 +160,11 @@ MACHINE_CONFIG_START(konin_state::konin) I8255(config, m_ioppi, 0); - MCFG_DEVICE_ADD("uart", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, konin_state, picu_r3_w)) + i8251_device &uart(I8251(config, "uart", 0)); + uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + uart.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + uart.rxrdy_handler().set(FUNC(konin_state::picu_r3_w)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE("uart", i8251_device, write_rxd)) diff --git a/src/mame/drivers/kyocera.cpp b/src/mame/drivers/kyocera.cpp index a7348a87446..e9cd74dbec9 100644 --- a/src/mame/drivers/kyocera.cpp +++ b/src/mame/drivers/kyocera.cpp @@ -1534,10 +1534,10 @@ MACHINE_CONFIG_START(tandy200_state::tandy200) MCFG_DEVICE_ADD(RP5C01A_TAG, RP5C01, XTAL(32'768)) - MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) /*XTAL(4'915'200)/2,*/ - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) + i8251_device &i8251(I8251(config, I8251_TAG, 0)); /*XTAL(4'915'200)/2,*/ + i8251.txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + i8251.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + i8251.rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/m20.cpp b/src/mame/drivers/m20.cpp index 926545878ca..d0ebbef8162 100644 --- a/src/mame/drivers/m20.cpp +++ b/src/mame/drivers/m20.cpp @@ -821,14 +821,14 @@ MACHINE_CONFIG_START(m20_state::m20) MCFG_DEVICE_ADD("ppi8255", I8255A, 0) - MCFG_DEVICE_ADD("i8251_1", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("kbd", rs232_port_device, write_txd)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("i8259", pic8259_device, ir4_w)) - - MCFG_DEVICE_ADD("i8251_2", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("i8259", pic8259_device, ir3_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE("i8259", pic8259_device, ir5_w)) + I8251(config, m_kbdi8251, 0); + m_kbdi8251->txd_handler().set("kbd", FUNC(rs232_port_device::write_txd)); + m_kbdi8251->rxrdy_handler().set("i8259", FUNC(pic8259_device::ir4_w)); + + I8251(config, m_ttyi8251, 0); + m_ttyi8251->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_ttyi8251->rxrdy_handler().set("i8259", FUNC(pic8259_device::ir3_w)); + m_ttyi8251->txrdy_handler().set("i8259", FUNC(pic8259_device::ir5_w)); MCFG_DEVICE_ADD("pit8253", PIT8253, 0) MCFG_PIT8253_CLK0(1230782) diff --git a/src/mame/drivers/mbc55x.cpp b/src/mame/drivers/mbc55x.cpp index c160b6820ae..872a9b492b0 100644 --- a/src/mame/drivers/mbc55x.cpp +++ b/src/mame/drivers/mbc55x.cpp @@ -266,8 +266,8 @@ MACHINE_CONFIG_START(mbc55x_state::mbc55x) SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, MONO_TAG, 0.75); /* Devices */ - MCFG_DEVICE_ADD(I8251A_KB_TAG, I8251, 0) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(PIC8259_TAG, pic8259_device, ir3_w)) + I8251(config, m_kb_uart, 0); + m_kb_uart->rxrdy_handler().set(PIC8259_TAG, FUNC(pic8259_device::ir3_w)); MCFG_DEVICE_ADD(PIT8253_TAG, PIT8253, 0) MCFG_PIT8253_CLK0(PIT_C0_CLOCK) diff --git a/src/mame/drivers/mc1502.cpp b/src/mame/drivers/mc1502.cpp index 63568bf5251..5a127e04836 100644 --- a/src/mame/drivers/mc1502.cpp +++ b/src/mame/drivers/mc1502.cpp @@ -262,14 +262,14 @@ MACHINE_CONFIG_START(mc1502_state::mc1502) MCFG_I8255_IN_PORTC_CB(READ8("cent_status_in", input_buffer_device, bus_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, mc1502_state, mc1502_kppi_portc_w)) - MCFG_DEVICE_ADD("upd8251", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) + I8251(config, m_upd8251, 0); + m_upd8251->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_upd8251->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + m_upd8251->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); /* XXX RxD data are accessible via PPI port C, bit 7 */ - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir7_w)) /* default handler does nothing */ - MCFG_I8251_TXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir7_w)) - MCFG_I8251_SYNDET_HANDLER(WRITELINE(*this, mc1502_state, mc1502_i8251_syndet)) + m_upd8251->rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir7_w)); /* default handler does nothing */ + m_upd8251->txrdy_handler().set("pic8259", FUNC(pic8259_device::ir7_w)); + m_upd8251->syndet_handler().set(FUNC(mc1502_state::mc1502_i8251_syndet)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("upd8251", i8251_device, write_rxd)) diff --git a/src/mame/drivers/meritum.cpp b/src/mame/drivers/meritum.cpp index 72019dab2e9..94ef2df1218 100644 --- a/src/mame/drivers/meritum.cpp +++ b/src/mame/drivers/meritum.cpp @@ -400,8 +400,8 @@ MACHINE_CONFIG_START(meritum_state::meritum) MCFG_DEVICE_PROGRAM_MAP(mem_map) MCFG_DEVICE_IO_MAP(io_map) - MCFG_DEVICE_ADD("usart", I8251, 10_MHz_XTAL / 4) // same as CPU clock - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) + i8251_device &usart(I8251(config, "usart", 10_MHz_XTAL / 4)); // same as CPU clock + usart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("usart", i8251_device, write_rxd)) diff --git a/src/mame/drivers/mfabfz.cpp b/src/mame/drivers/mfabfz.cpp index de94db99fb0..0c9b3aa76f9 100644 --- a/src/mame/drivers/mfabfz.cpp +++ b/src/mame/drivers/mfabfz.cpp @@ -113,10 +113,10 @@ MACHINE_CONFIG_START(mfabfz_state::mfabfz) uart1_clock.signal_handler().set("uart1", FUNC(i8251_device::write_txc)); uart1_clock.signal_handler().append("uart1", FUNC(i8251_device::write_rxc)); - MCFG_DEVICE_ADD("uart1", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) + i8251_device &uart1(I8251(config, "uart1", 0)); + uart1.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + uart1.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + uart1.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE("uart1", i8251_device, write_rxd)) diff --git a/src/mame/drivers/mice.cpp b/src/mame/drivers/mice.cpp index 0a6c6b38934..6a49a3e5f0c 100644 --- a/src/mame/drivers/mice.cpp +++ b/src/mame/drivers/mice.cpp @@ -168,12 +168,12 @@ MACHINE_CONFIG_START(mice_state::mice) MCFG_DEVICE_PROGRAM_MAP(mice_mem) MCFG_DEVICE_IO_MAP(mice_io) - MCFG_DEVICE_ADD("uart", I8251, 6.144_MHz_XTAL / 2) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_I8251_TXRDY_HANDLER(INPUTLINE("maincpu", I8085_RST65_LINE)) - MCFG_I8251_RXRDY_HANDLER(INPUTLINE("maincpu", I8085_RST75_LINE)) + i8251_device &uart(I8251(config, "uart", 6.144_MHz_XTAL / 2)); + uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + uart.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + uart.txrdy_handler().set_inputline("maincpu", I8085_RST65_LINE); + uart.rxrdy_handler().set_inputline("maincpu", I8085_RST75_LINE); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE("uart", i8251_device, write_rxd)) diff --git a/src/mame/drivers/ms0515.cpp b/src/mame/drivers/ms0515.cpp index 5d0ac563e00..4b4ac024d79 100644 --- a/src/mame/drivers/ms0515.cpp +++ b/src/mame/drivers/ms0515.cpp @@ -550,27 +550,27 @@ MACHINE_CONFIG_START(ms0515_state::ms0515) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, ms0515_state, ms0515_portc_w)) // serial connection to printer - MCFG_DEVICE_ADD( "i8251line", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, ms0515_state, irq9_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, ms0515_state, irq8_w)) + I8251(config, m_i8251line, 0); + m_i8251line->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_i8251line->rxrdy_handler().set(FUNC(ms0515_state::irq9_w)); + m_i8251line->txrdy_handler().set(FUNC(ms0515_state::irq8_w)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE("i8251line", i8251_device, write_rxd)) - MCFG_RS232_CTS_HANDLER(WRITELINE("i8251line", i8251_device, write_cts)) - MCFG_RS232_DSR_HANDLER(WRITELINE("i8251line", i8251_device, write_dsr)) + MCFG_RS232_RXD_HANDLER(WRITELINE(m_i8251line, i8251_device, write_rxd)) + MCFG_RS232_CTS_HANDLER(WRITELINE(m_i8251line, i8251_device, write_cts)) + MCFG_RS232_DSR_HANDLER(WRITELINE(m_i8251line, i8251_device, write_dsr)) // MCFG_DEVICE_ADD("line_clock", CLOCK, 4800*16) // 8251 is set to /16 on the clock input // MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, ms0515_state, write_line_clock)) // serial connection to MS7004 keyboard - MCFG_DEVICE_ADD("i8251kbd", I8251, 0) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, ms0515_state, irq5_w)) - MCFG_I8251_TXD_HANDLER(WRITELINE("ms7004", ms7004_device, write_rxd)) + I8251(config, m_i8251kbd, 0); + m_i8251kbd->rxrdy_handler().set(FUNC(ms0515_state::irq5_w)); + m_i8251kbd->txd_handler().set("ms7004", FUNC(ms7004_device::write_rxd)); MCFG_DEVICE_ADD("ms7004", MS7004, 0) - MCFG_MS7004_TX_HANDLER(WRITELINE("i8251kbd", i8251_device, write_rxd)) - MCFG_MS7004_RTS_HANDLER(WRITELINE("i8251kbd", i8251_device, write_cts)) + MCFG_MS7004_TX_HANDLER(WRITELINE(m_i8251kbd, i8251_device, write_rxd)) + MCFG_MS7004_RTS_HANDLER(WRITELINE(m_i8251kbd, i8251_device, write_cts)) // baud rate is supposed to be 4800 but keyboard is slightly faster MCFG_DEVICE_ADD("keyboard_clock", CLOCK, 4960*16) diff --git a/src/mame/drivers/nc.cpp b/src/mame/drivers/nc.cpp index aa93fb9faeb..9591e98f3a5 100644 --- a/src/mame/drivers/nc.cpp +++ b/src/mame/drivers/nc.cpp @@ -1406,7 +1406,7 @@ MACHINE_CONFIG_START(nc_state::nc_base) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") /* uart */ - MCFG_DEVICE_ADD("uart", I8251, 0) + I8251(config, m_uart, 0); MCFG_DEVICE_ADD("uart_clock", CLOCK, 19200) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, nc_state, write_uart_clock)) @@ -1441,9 +1441,8 @@ MACHINE_CONFIG_START(nc100_state::nc100) MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, nc100_state, write_nc100_centronics_ack)) /* uart */ - MCFG_DEVICE_MODIFY("uart") - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, nc100_state, nc100_rxrdy_callback)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, nc100_state, nc100_txrdy_callback)) + m_uart->rxrdy_handler().set(FUNC(nc100_state::nc100_rxrdy_callback)); + m_uart->txrdy_handler().set(FUNC(nc100_state::nc100_txrdy_callback)); /* rtc */ MCFG_DEVICE_ADD("rtc", TC8521, 32.768_kHz_XTAL) @@ -1482,9 +1481,8 @@ MACHINE_CONFIG_START(nc200_state::nc200) MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, nc200_state, write_nc200_centronics_ack)) /* uart */ - MCFG_DEVICE_MODIFY("uart") - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, nc200_state, nc200_rxrdy_callback)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, nc200_state, nc200_txrdy_callback)) + m_uart->rxrdy_handler().set(FUNC(nc200_state::nc200_rxrdy_callback)); + m_uart->txrdy_handler().set(FUNC(nc200_state::nc200_txrdy_callback)); MCFG_UPD765A_ADD("upd765", true, true) MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, nc200_state, nc200_fdc_interrupt)) diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp index d2ba92e7065..0280c9a1f93 100644 --- a/src/mame/drivers/ngen.cpp +++ b/src/mame/drivers/ngen.cpp @@ -1013,11 +1013,11 @@ MACHINE_CONFIG_START(ngen_state::ngen) MCFG_VIDEO_SET_SCREEN("screen") // keyboard UART (patent says i8251 is used for keyboard communications, it is located on the video board) - MCFG_DEVICE_ADD("videouart", I8251, 0) // main clock unknown, Rx/Tx clocks are 19.53kHz -// MCFG_I8251_TXEMPTY_HANDLER(WRITELINE("pic",pic8259_device,ir4_w)) - MCFG_I8251_TXD_HANDLER(WRITELINE("keyboard", rs232_port_device, write_txd)) + I8251(config, m_viduart, 0); // main clock unknown, Rx/Tx clocks are 19.53kHz +// m_viduart->txempty_handler().set("pic", FUNC(pic8259_device::ir4_w)); + m_viduart->txd_handler().set("keyboard", FUNC(rs232_port_device::write_txd)); MCFG_DEVICE_ADD("keyboard", RS232_PORT, keyboard, "ngen") - MCFG_RS232_RXD_HANDLER(WRITELINE("videouart", i8251_device, write_rxd)) + MCFG_RS232_RXD_HANDLER(WRITELINE(m_viduart, i8251_device, write_rxd)) MCFG_DEVICE_ADD("refresh_clock", CLOCK, 19200*16) // should be 19530Hz MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, ngen_state,timer_clk_out)) @@ -1124,11 +1124,11 @@ MACHINE_CONFIG_START(ngen386_state::ngen386) MCFG_VIDEO_SET_SCREEN("screen") // keyboard UART (patent says i8251 is used for keyboard communications, it is located on the video board) - MCFG_DEVICE_ADD("videouart", I8251, 0) // main clock unknown, Rx/Tx clocks are 19.53kHz -// MCFG_I8251_TXEMPTY_HANDLER(WRITELINE("pic",pic8259_device,ir4_w)) - MCFG_I8251_TXD_HANDLER(WRITELINE("keyboard", rs232_port_device, write_txd)) + I8251(config, m_viduart, 0); // main clock unknown, Rx/Tx clocks are 19.53kHz +// m_viduart->txempty_handler().set("pic", FUNC(pic8259_device::ir4_w)); + m_viduart->txd_handler().set("keyboard", FUNC(rs232_port_device::write_txd)); MCFG_DEVICE_ADD("keyboard", RS232_PORT, keyboard, "ngen") - MCFG_RS232_RXD_HANDLER(WRITELINE("videouart", i8251_device, write_rxd)) + MCFG_RS232_RXD_HANDLER(WRITELINE(m_viduart, i8251_device, write_rxd)) MCFG_DEVICE_ADD("refresh_clock", CLOCK, 19200*16) // should be 19530Hz MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, ngen386_state,timer_clk_out)) diff --git a/src/mame/drivers/octopus.cpp b/src/mame/drivers/octopus.cpp index d5c7bb0621f..d9b269e6593 100644 --- a/src/mame/drivers/octopus.cpp +++ b/src/mame/drivers/octopus.cpp @@ -947,10 +947,10 @@ MACHINE_CONFIG_START(octopus_state::octopus) m_rtc->irq_callback().set(m_pic2, FUNC(pic8259_device::ir2_w)); // Keyboard UART - MCFG_DEVICE_ADD("keyboard", I8251, 0) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic_slave",pic8259_device, ir4_w)) - MCFG_I8251_DTR_HANDLER(WRITELINE(*this, octopus_state,spk_w)) - MCFG_I8251_RTS_HANDLER(WRITELINE(*this, octopus_state,beep_w)) + I8251(config, m_kb_uart, 0); + m_kb_uart->rxrdy_handler().set("pic_slave", FUNC(pic8259_device::ir4_w)); + m_kb_uart->dtr_handler().set(FUNC(octopus_state::spk_w)); + m_kb_uart->rts_handler().set(FUNC(octopus_state::beep_w)); MCFG_DEVICE_ADD("keyboard_port", RS232_PORT, keyboard, "octopus") MCFG_RS232_RXD_HANDLER(WRITELINE("keyboard", i8251_device, write_rxd)) MCFG_DEVICE_ADD("keyboard_clock_rx", CLOCK, 9600 * 64) diff --git a/src/mame/drivers/okean240.cpp b/src/mame/drivers/okean240.cpp index d21bdbbd038..fb30a6eb43a 100644 --- a/src/mame/drivers/okean240.cpp +++ b/src/mame/drivers/okean240.cpp @@ -513,10 +513,10 @@ MACHINE_CONFIG_START(okean240_state::okean240t) MCFG_DEVICE_PROGRAM_MAP(okean240_mem) MCFG_DEVICE_IO_MAP(okean240t_io) - MCFG_DEVICE_ADD("uart", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) + i8251_device &uart(I8251(config, "uart", 0)); + uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + uart.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE("uart", i8251_device, write_rxd)) diff --git a/src/mame/drivers/pc100.cpp b/src/mame/drivers/pc100.cpp index 8d802d3322c..9316338dfb9 100644 --- a/src/mame/drivers/pc100.cpp +++ b/src/mame/drivers/pc100.cpp @@ -662,11 +662,11 @@ MACHINE_CONFIG_START(pc100_state::pc100) MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) // ??? - MCFG_DEVICE_ADD("uart8251", I8251, 0) - //MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - //MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - //MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir1_w)) + i8251_device &i8251(I8251(config, "uart8251", 0)); + //i8251.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + //i8251.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + //i8251.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + i8251.rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir1_w)); MCFG_UPD765A_ADD("upd765", true, true) MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pc100_state, irqnmi_w)) diff --git a/src/mame/drivers/pc8401a.cpp b/src/mame/drivers/pc8401a.cpp index 253e32c1ed1..28987acefe4 100644 --- a/src/mame/drivers/pc8401a.cpp +++ b/src/mame/drivers/pc8401a.cpp @@ -587,10 +587,10 @@ MACHINE_CONFIG_START(pc8401a_state::pc8401a) MCFG_I8255_IN_PORTC_CB(READ8(*this, pc8401a_state, ppi_pc_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pc8401a_state, ppi_pc_w)) - MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) + i8251_device &uart(I8251(config, I8251_TAG, 0)); + uart.txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + uart.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + uart.rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_rxd)) @@ -627,10 +627,10 @@ MACHINE_CONFIG_START(pc8500_state::pc8500) MCFG_I8255_IN_PORTC_CB(READ8(*this, pc8401a_state, ppi_pc_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pc8401a_state, ppi_pc_w)) - MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) + i8251_device &uart(I8251(config, I8251_TAG, 0)); + uart.txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + uart.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + uart.rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/pc8801.cpp b/src/mame/drivers/pc8801.cpp index 3a6603dacdc..fcd37b3afd9 100644 --- a/src/mame/drivers/pc8801.cpp +++ b/src/mame/drivers/pc8801.cpp @@ -2384,9 +2384,9 @@ MACHINE_CONFIG_START(pc8801_state::pc8801) MCFG_SOFTWARE_LIST_ADD("tape_list","pc8801_cass") - MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(*this, pc8801_state, txdata_callback)) - MCFG_I8251_RTS_HANDLER(WRITELINE(*this, pc8801_state, rxrdy_w)) + i8251_device &i8251(I8251(config, I8251_TAG, 0)); + i8251.txd_handler().set(FUNC(pc8801_state::txdata_callback)); + i8251.rts_handler().set(FUNC(pc8801_state::rxrdy_w)); MCFG_FLOPPY_DRIVE_ADD("upd765:0", pc88_floppies, "525hd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", pc88_floppies, "525hd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp index 06cc28e0a5b..7aa1abc44ae 100644 --- a/src/mame/drivers/peoplepc.cpp +++ b/src/mame/drivers/peoplepc.cpp @@ -296,15 +296,15 @@ MACHINE_CONFIG_START(peoplepc_state::olypeopl) MCFG_FLOPPY_DRIVE_ADD("upd765:0", peoplepc_floppies, "525qd", peoplepc_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", peoplepc_floppies, "525qd", peoplepc_state::floppy_formats) - MCFG_DEVICE_ADD("i8251_0", I8251, 0) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259_1", pic8259_device, ir1_w)) - MCFG_I8251_TXD_HANDLER(WRITELINE("kbd", rs232_port_device, write_txd)) + I8251(config, m_8251key, 0); + m_8251key->rxrdy_handler().set("pic8259_1", FUNC(pic8259_device::ir1_w)); + m_8251key->txd_handler().set("kbd", FUNC(rs232_port_device::write_txd)); MCFG_DEVICE_ADD("kbd", RS232_PORT, peoplepc_keyboard_devices, "keyboard") MCFG_RS232_RXD_HANDLER(WRITELINE("i8251_0", i8251_device, write_rxd)) MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("keyboard", keyboard) - MCFG_DEVICE_ADD("i8251_1", I8251, 0) + I8251(config, m_8251ser, 0); MACHINE_CONFIG_END ROM_START( olypeopl ) diff --git a/src/mame/drivers/pk8020.cpp b/src/mame/drivers/pk8020.cpp index 886dbd73f42..854d8efafc4 100644 --- a/src/mame/drivers/pk8020.cpp +++ b/src/mame/drivers/pk8020.cpp @@ -233,17 +233,17 @@ MACHINE_CONFIG_START(pk8020_state::pk8020) MCFG_DEVICE_ADD("pic8259", PIC8259, 0) MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) - MCFG_DEVICE_ADD("i8251line", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir1_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir2_w)) + I8251(config, m_rs232, 0); + m_rs232->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_rs232->rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir1_w)); + m_rs232->txrdy_handler().set("pic8259", FUNC(pic8259_device::ir2_w)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("i8251line", i8251_device, write_rxd)) MCFG_RS232_CTS_HANDLER(WRITELINE("i8251line", i8251_device, write_cts)) MCFG_RS232_DSR_HANDLER(WRITELINE("i8251line", i8251_device, write_dsr)) - MCFG_DEVICE_ADD("i8251lan", I8251, 0) + I8251(config, m_lan, 0); MCFG_DEVICE_ADD("wd1793", FD1793, 20_MHz_XTAL / 20) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE("pic8259", pic8259_device, ir7_w)) diff --git a/src/mame/drivers/pmd85.cpp b/src/mame/drivers/pmd85.cpp index cb17bc0fee6..5572ba5277d 100644 --- a/src/mame/drivers/pmd85.cpp +++ b/src/mame/drivers/pmd85.cpp @@ -580,12 +580,13 @@ static const struct CassetteOptions pmd85_cassette_options = }; /* machine definition */ -MACHINE_CONFIG_START(pmd85_state::pmd85) +void pmd85_state::pmd85(machine_config &config, bool with_uart) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", I8080, 2000000) /* 2.048MHz ??? */ - MCFG_DEVICE_PROGRAM_MAP(pmd85_mem) - MCFG_DEVICE_IO_MAP(pmd85_io_map) - MCFG_QUANTUM_TIME(attotime::from_hz(60)) + I8080(config, m_maincpu, 2000000); /* 2.048MHz ??? */ + m_maincpu->set_addrmap(AS_PROGRAM, &pmd85_state::pmd85_mem); + m_maincpu->set_addrmap(AS_IO, &pmd85_state::pmd85_io_map); + config.m_minimum_quantum = attotime::from_hz(60); /******************************************************************************* @@ -608,145 +609,148 @@ MACHINE_CONFIG_START(pmd85_state::pmd85) *******************************************************************************/ - MCFG_DEVICE_ADD("pit8253", PIT8253, 0) - MCFG_PIT8253_CLK0(0) - MCFG_PIT8253_CLK1(2000000) - MCFG_PIT8253_CLK2(1) + PIT8253(config, m_pit8253, 0); + m_pit8253->set_clk<0>(0); + m_pit8253->set_clk<1>(2000000); + m_pit8253->set_clk<2>(1); /* video hardware */ - MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green()) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(0) - MCFG_SCREEN_SIZE(288, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 288-1, 0, 256-1) - MCFG_SCREEN_UPDATE_DRIVER(pmd85_state, screen_update_pmd85) - MCFG_SCREEN_PALETTE("palette") - - MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_color(rgb_t::green()); + screen.set_refresh_hz(50); + screen.set_vblank_time(0); + screen.set_size(288, 256); + screen.set_visarea(0, 288-1, 0, 256-1); + screen.set_screen_update(FUNC(pmd85_state::screen_update_pmd85)); + screen.set_palette("palette"); + + PALETTE(config, m_palette, 2); + m_palette->set_init("palette", FUNC(palette_device::palette_init_monochrome_highlight)); /* sound hardware */ SPEAKER(config, "mono").front_center(); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); /* cassette */ - MCFG_CASSETTE_ADD("cassette") - MCFG_CASSETTE_FORMATS(pmd85_cassette_formats) - MCFG_CASSETTE_CREATE_OPTS(&pmd85_cassette_options) - MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED) - MCFG_CASSETTE_INTERFACE("pmd85_cass") + CASSETTE(config, m_cassette); + m_cassette->set_formats(pmd85_cassette_formats); + m_cassette->set_create_opts(&pmd85_cassette_options); + m_cassette->set_default_state((cassette_state) (CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED)); + m_cassette->set_interface("pmd85_cass"); /* software lists */ - MCFG_SOFTWARE_LIST_ADD("cass_list", "pmd85_cass") + SOFTWARE_LIST(config, "cass_list").set_original("pmd85_cass"); /* uart */ - MCFG_DEVICE_ADD("uart", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(*this, pmd85_state, write_cas_tx)) + if (with_uart) + { + I8251(config, m_uart, 0); + m_uart->txd_handler().set(FUNC(pmd85_state::write_cas_tx)); + } /* internal ram */ - RAM(config, RAM_TAG).set_default_size("64K"); -MACHINE_CONFIG_END + RAM(config, m_ram).set_default_size("64K"); +} -MACHINE_CONFIG_START(pmd85_state::pmd851) +void pmd85_state::pmd851(machine_config &config) +{ pmd85(config); - MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) - MCFG_I8255_IN_PORTA_CB(READ8(*this, pmd85_state, pmd85_ppi_0_porta_r)) - MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, pmd85_state, pmd85_ppi_0_porta_w)) - MCFG_I8255_IN_PORTB_CB(READ8(*this, pmd85_state, pmd85_ppi_0_portb_r)) - MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, pmd85_state, pmd85_ppi_0_portb_w)) - MCFG_I8255_IN_PORTC_CB(READ8(*this, pmd85_state, pmd85_ppi_0_portc_r)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pmd85_state, pmd85_ppi_0_portc_w)) - - MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) - MCFG_I8255_IN_PORTA_CB(READ8(*this, pmd85_state, pmd85_ppi_1_porta_r)) - MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, pmd85_state, pmd85_ppi_1_porta_w)) - MCFG_I8255_IN_PORTB_CB(READ8(*this, pmd85_state, pmd85_ppi_1_portb_r)) - MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, pmd85_state, pmd85_ppi_1_portb_w)) - MCFG_I8255_IN_PORTC_CB(READ8(*this, pmd85_state, pmd85_ppi_1_portc_r)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pmd85_state, pmd85_ppi_1_portc_w)) - - MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) - MCFG_I8255_IN_PORTA_CB(READ8(*this, pmd85_state, pmd85_ppi_2_porta_r)) - MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, pmd85_state, pmd85_ppi_2_porta_w)) - MCFG_I8255_IN_PORTB_CB(READ8(*this, pmd85_state, pmd85_ppi_2_portb_r)) - MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, pmd85_state, pmd85_ppi_2_portb_w)) - MCFG_I8255_IN_PORTC_CB(READ8(*this, pmd85_state, pmd85_ppi_2_portc_r)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pmd85_state, pmd85_ppi_2_portc_w)) - - MCFG_DEVICE_ADD("ppi8255_3", I8255, 0) - MCFG_I8255_IN_PORTA_CB(READ8(*this, pmd85_state, pmd85_ppi_3_porta_r)) - MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, pmd85_state, pmd85_ppi_3_porta_w)) - MCFG_I8255_IN_PORTB_CB(READ8(*this, pmd85_state, pmd85_ppi_3_portb_r)) - MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, pmd85_state, pmd85_ppi_3_portb_w)) - MCFG_I8255_IN_PORTC_CB(READ8(*this, pmd85_state, pmd85_ppi_3_portc_r)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pmd85_state, pmd85_ppi_3_portc_w)) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(pmd85_state::pmd852a) + I8255(config, m_ppi8255_0, 0); + m_ppi8255_0->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_r)); + m_ppi8255_0->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portb_r)); + m_ppi8255_0->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portc_r)); + m_ppi8255_0->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_w)); + m_ppi8255_0->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portb_w)); + m_ppi8255_0->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portc_w)); + + I8255(config, m_ppi8255_1, 0); + m_ppi8255_1->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_1_porta_r)); + m_ppi8255_1->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portb_r)); + m_ppi8255_1->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portc_r)); + m_ppi8255_1->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_1_porta_w)); + m_ppi8255_1->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portb_w)); + m_ppi8255_1->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portc_w)); + + I8255(config, m_ppi8255_2, 0); + m_ppi8255_2->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_2_porta_r)); + m_ppi8255_2->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portb_r)); + m_ppi8255_2->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portc_r)); + m_ppi8255_2->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_2_porta_w)); + m_ppi8255_2->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portb_w)); + m_ppi8255_2->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portc_w)); + + I8255(config, m_ppi8255_3, 0); + m_ppi8255_3->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_3_porta_r)); + m_ppi8255_3->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_3_portb_r)); + m_ppi8255_3->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_3_portc_r)); + m_ppi8255_3->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_3_porta_w)); + m_ppi8255_3->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_3_portb_w)); + m_ppi8255_3->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_3_portc_w)); +} + +void pmd85_state::pmd852a(machine_config &config) +{ pmd851(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(pmd852a_mem) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &pmd85_state::pmd852a_mem); +} -MACHINE_CONFIG_START(pmd85_state::pmd853) +void pmd85_state::pmd853(machine_config &config) +{ pmd851(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(pmd853_mem) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &pmd85_state::pmd853_mem); +} -MACHINE_CONFIG_START(pmd85_state::alfa) - pmd85(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(alfa_mem) - - MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) - MCFG_I8255_IN_PORTA_CB(READ8(*this, pmd85_state, pmd85_ppi_0_porta_r)) - MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, pmd85_state, pmd85_ppi_0_porta_w)) - MCFG_I8255_IN_PORTB_CB(READ8(*this, pmd85_state, pmd85_ppi_0_portb_r)) - MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, pmd85_state, pmd85_ppi_0_portb_w)) - MCFG_I8255_IN_PORTC_CB(READ8(*this, pmd85_state, pmd85_ppi_0_portc_r)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pmd85_state, pmd85_ppi_0_portc_w)) - - MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) - MCFG_I8255_IN_PORTA_CB(READ8(*this, pmd85_state, pmd85_ppi_1_porta_r)) - MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, pmd85_state, pmd85_ppi_1_porta_w)) - MCFG_I8255_IN_PORTB_CB(READ8(*this, pmd85_state, pmd85_ppi_1_portb_r)) - MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, pmd85_state, pmd85_ppi_1_portb_w)) - MCFG_I8255_IN_PORTC_CB(READ8(*this, pmd85_state, pmd85_ppi_1_portc_r)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pmd85_state, pmd85_ppi_1_portc_w)) - - MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) - MCFG_I8255_IN_PORTA_CB(READ8(*this, pmd85_state, pmd85_ppi_2_porta_r)) - MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, pmd85_state, pmd85_ppi_2_porta_w)) - MCFG_I8255_IN_PORTB_CB(READ8(*this, pmd85_state, pmd85_ppi_2_portb_r)) - MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, pmd85_state, pmd85_ppi_2_portb_w)) - MCFG_I8255_IN_PORTC_CB(READ8(*this, pmd85_state, pmd85_ppi_2_portc_r)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pmd85_state, pmd85_ppi_2_portc_w)) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(pmd85_state::mato) +void pmd85_state::alfa(machine_config &config) +{ pmd85(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(mato_mem) - MCFG_DEVICE_IO_MAP(mato_io_map) - - MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) - MCFG_I8255_IN_PORTA_CB(READ8(*this, pmd85_state, pmd85_ppi_0_porta_r)) - MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, pmd85_state, pmd85_ppi_0_porta_w)) - MCFG_I8255_IN_PORTB_CB(READ8(*this, pmd85_state, mato_ppi_0_portb_r)) - MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, pmd85_state, pmd85_ppi_0_portb_w)) - MCFG_I8255_IN_PORTC_CB(READ8(*this, pmd85_state, mato_ppi_0_portc_r)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, pmd85_state, mato_ppi_0_portc_w)) - - /* no uart */ - MCFG_DEVICE_REMOVE("uart") -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(pmd85_state::c2717) + m_maincpu->set_addrmap(AS_PROGRAM, &pmd85_state::alfa_mem); + + I8255(config, m_ppi8255_0, 0); + m_ppi8255_0->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_r)); + m_ppi8255_0->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portb_r)); + m_ppi8255_0->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portc_r)); + m_ppi8255_0->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_w)); + m_ppi8255_0->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portb_w)); + m_ppi8255_0->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portc_w)); + + I8255(config, m_ppi8255_1, 0); + m_ppi8255_1->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_1_porta_r)); + m_ppi8255_1->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portb_r)); + m_ppi8255_1->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portc_r)); + m_ppi8255_1->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_1_porta_w)); + m_ppi8255_1->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portb_w)); + m_ppi8255_1->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_1_portc_w)); + + I8255(config, m_ppi8255_2, 0); + m_ppi8255_2->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_2_porta_r)); + m_ppi8255_2->in_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portb_r)); + m_ppi8255_2->in_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portc_r)); + m_ppi8255_2->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_2_porta_w)); + m_ppi8255_2->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portb_w)); + m_ppi8255_2->out_pc_callback().set(FUNC(pmd85_state::pmd85_ppi_2_portc_w)); +} + +void pmd85_state::mato(machine_config &config) +{ + pmd85(config, false); /* no uart */ + m_maincpu->set_addrmap(AS_PROGRAM, &pmd85_state::mato_mem); + m_maincpu->set_addrmap(AS_IO, &pmd85_state::mato_io_map); + + I8255(config, m_ppi8255_0, 0); + m_ppi8255_0->in_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_r)); + m_ppi8255_0->out_pa_callback().set(FUNC(pmd85_state::pmd85_ppi_0_porta_w)); + m_ppi8255_0->in_pb_callback().set(FUNC(pmd85_state::mato_ppi_0_portb_r)); + m_ppi8255_0->out_pb_callback().set(FUNC(pmd85_state::pmd85_ppi_0_portb_w)); + m_ppi8255_0->in_pc_callback().set(FUNC(pmd85_state::mato_ppi_0_portc_r)); + m_ppi8255_0->out_pc_callback().set(FUNC(pmd85_state::mato_ppi_0_portc_w)); +} + +void pmd85_state::c2717(machine_config &config) +{ pmd851(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(c2717_mem) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &pmd85_state::c2717_mem); +} ROM_START(pmd851) diff --git a/src/mame/drivers/poly88.cpp b/src/mame/drivers/poly88.cpp index b2736674513..218b727a0e9 100644 --- a/src/mame/drivers/poly88.cpp +++ b/src/mame/drivers/poly88.cpp @@ -227,9 +227,9 @@ MACHINE_CONFIG_START(poly88_state::poly88) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED) /* uart */ - MCFG_DEVICE_ADD("uart", I8251, XTAL(16'588'800) / 9) - MCFG_I8251_TXD_HANDLER(WRITELINE(*this, poly88_state,write_cas_tx)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, poly88_state,poly88_usart_rxready)) + I8251(config, m_uart, XTAL(16'588'800) / 9); + m_uart->txd_handler().set(FUNC(poly88_state::write_cas_tx)); + m_uart->rxrdy_handler().set(FUNC(poly88_state::poly88_usart_rxready)); /* snapshot */ MCFG_SNAPSHOT_ADD("snapshot", poly88_state, poly88, "img", 2) diff --git a/src/mame/drivers/qtsbc.cpp b/src/mame/drivers/qtsbc.cpp index 4a937b3bebb..7bdc8061e12 100644 --- a/src/mame/drivers/qtsbc.cpp +++ b/src/mame/drivers/qtsbc.cpp @@ -493,8 +493,8 @@ MACHINE_CONFIG_START(qtsbc_state::qtsbc) m_pit->set_clk<1>(4_MHz_XTAL / 2); m_pit->out_handler<1>().set(m_pit, FUNC(pit8253_device::write_clk2)); - MCFG_DEVICE_ADD("usart", I8251, 0) // U8 - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) + I8251(config, m_usart, 0); // U8 + m_usart->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE("usart", i8251_device, write_rxd)) diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp index 727f3b514b1..aa22f3373aa 100644 --- a/src/mame/drivers/rainbow.cpp +++ b/src/mame/drivers/rainbow.cpp @@ -3333,11 +3333,11 @@ MACHINE_CONFIG_START(rainbow_state::rainbow) MCFG_DEVICE_MODIFY("printer") MCFG_SLOT_DEFAULT_OPTION("printer") - MCFG_DEVICE_ADD("kbdser", I8251, 24.0734_MHz_XTAL / 5 / 2) - MCFG_I8251_TXD_HANDLER(WRITELINE(*this, rainbow_state, kbd_tx)) - MCFG_I8251_DTR_HANDLER(WRITELINE(*this, rainbow_state, irq_hi_w)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, rainbow_state, kbd_rxready_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, rainbow_state, kbd_txready_w)) + I8251(config, m_kbd8251, 24.0734_MHz_XTAL / 5 / 2); + m_kbd8251->txd_handler().set(FUNC(rainbow_state::kbd_tx)); + m_kbd8251->dtr_handler().set(FUNC(rainbow_state::irq_hi_w)); + m_kbd8251->rxrdy_handler().set(FUNC(rainbow_state::kbd_rxready_w)); + m_kbd8251->txrdy_handler().set(FUNC(rainbow_state::kbd_txready_w)); MCFG_DEVICE_ADD(LK201_TAG, LK201, 0) MCFG_LK201_TX_HANDLER(WRITELINE("kbdser", i8251_device, write_rxd)) diff --git a/src/mame/drivers/sage2.cpp b/src/mame/drivers/sage2.cpp index ce7897bb311..b5cb29a0115 100644 --- a/src/mame/drivers/sage2.cpp +++ b/src/mame/drivers/sage2.cpp @@ -445,29 +445,29 @@ MACHINE_CONFIG_START(sage2_state::sage2) MCFG_PIT8253_CLK2(XTAL(16'000'000)/2/13) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, sage2_state, br2_w)) - MCFG_DEVICE_ADD(I8251_0_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(INPUTLINE(M68000_TAG, M68K_IRQ_5)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(I8259_TAG, pic8259_device, ir2_w)) + I8251(config, m_usart0, 0); + m_usart0->txd_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd)); + m_usart0->dtr_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr)); + m_usart0->rts_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts)); + m_usart0->rxrdy_handler().set_inputline(M68000_TAG, M68K_IRQ_5); + m_usart0->txrdy_handler().set(I8259_TAG, FUNC(pic8259_device::ir2_w)); MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_0_TAG, i8251_device, write_rxd)) - MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_0_TAG, i8251_device, write_dsr)) - MCFG_RS232_CTS_HANDLER(WRITELINE(I8251_0_TAG, i8251_device, write_cts)) + MCFG_RS232_RXD_HANDLER(WRITELINE(m_usart0, i8251_device, write_rxd)) + MCFG_RS232_DSR_HANDLER(WRITELINE(m_usart0, i8251_device, write_dsr)) + MCFG_RS232_CTS_HANDLER(WRITELINE(m_usart0, i8251_device, write_cts)) MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal) - MCFG_DEVICE_ADD(I8251_1_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(I8259_TAG, pic8259_device, ir1_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(I8259_TAG, pic8259_device, ir3_w)) + I8251(config, m_usart1, 0); + m_usart1->txd_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd)); + m_usart1->dtr_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_dtr)); + m_usart1->rts_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts)); + m_usart1->rxrdy_handler().set(I8259_TAG, FUNC(pic8259_device::ir1_w)); + m_usart1->txrdy_handler().set(I8259_TAG, FUNC(pic8259_device::ir3_w)); MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_1_TAG, i8251_device, write_rxd)) - MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_1_TAG, i8251_device, write_dsr)) + MCFG_RS232_RXD_HANDLER(WRITELINE(m_usart1, i8251_device, write_rxd)) + MCFG_RS232_DSR_HANDLER(WRITELINE(m_usart1, i8251_device, write_dsr)) MCFG_UPD765A_ADD(UPD765_TAG, false, false) MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, sage2_state, fdc_irq)) diff --git a/src/mame/drivers/scopus.cpp b/src/mame/drivers/scopus.cpp index 762ad4368e7..8c84ebe98b1 100644 --- a/src/mame/drivers/scopus.cpp +++ b/src/mame/drivers/scopus.cpp @@ -187,10 +187,10 @@ MACHINE_CONFIG_START(sagitta180_state::sagitta180) MCFG_I8257_OUT_HRQ_CB(WRITELINE(*this, sagitta180_state, hrq_w)) MCFG_I8257_IN_MEMR_CB(READ8(*this, sagitta180_state, memory_read_byte)) - MCFG_DEVICE_ADD( "uart", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) + i8251_device &uart(I8251(config, "uart", 0)); + uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + uart.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("uart", i8251_device, write_rxd)) diff --git a/src/mame/drivers/sdk80.cpp b/src/mame/drivers/sdk80.cpp index 803f3c28432..ebdc7cd6a2d 100644 --- a/src/mame/drivers/sdk80.cpp +++ b/src/mame/drivers/sdk80.cpp @@ -128,10 +128,10 @@ MACHINE_CONFIG_START(sdk80_state::sdk80) MCFG_DEVICE_PROGRAM_MAP(sdk80_mem) MCFG_DEVICE_IO_MAP(sdk80_io) - MCFG_DEVICE_ADD(I8251A_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) + I8251(config, m_usart, 0); + m_usart->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + m_usart->dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + m_usart->rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(I8255A_0_TAG, I8255A, 0) MCFG_DEVICE_ADD(I8255A_1_TAG, I8255A, 0) diff --git a/src/mame/drivers/sdk86.cpp b/src/mame/drivers/sdk86.cpp index 150bc51e7d0..0e73afc4be8 100644 --- a/src/mame/drivers/sdk86.cpp +++ b/src/mame/drivers/sdk86.cpp @@ -156,10 +156,10 @@ MACHINE_CONFIG_START(sdk86_state::sdk86) config.set_default_layout(layout_sdk86); /* Devices */ - MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_cts)) + i8251_device &i8251(I8251(config, I8251_TAG, 0)); + i8251.txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + i8251.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + i8251.rts_handler().set(I8251_TAG, FUNC(i8251_device::write_cts)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/seattlecmp.cpp b/src/mame/drivers/seattlecmp.cpp index dc68997df5b..0d9a1745a07 100644 --- a/src/mame/drivers/seattlecmp.cpp +++ b/src/mame/drivers/seattlecmp.cpp @@ -127,12 +127,12 @@ MACHINE_CONFIG_START(seattle_comp_state::seattle) stc.fout_cb().set("stc", FUNC(am9513_device::source1_w)); // FOUT not shown on schematics, which inexplicably have Source 1 tied to Gate 5 - MCFG_DEVICE_ADD("uart", I8251, XTAL(24'000'000) / 12) // CLOCK on line 49 - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic2", pic8259_device, ir1_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE("pic2", pic8259_device, ir5_w)) + i8251_device &uart(I8251(config, "uart", XTAL(24'000'000) / 12)); // CLOCK on line 49 + uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + uart.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + uart.rxrdy_handler().set("pic2", FUNC(pic8259_device::ir1_w)); + uart.txrdy_handler().set("pic2", FUNC(pic8259_device::ir5_w)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE("uart", i8251_device, write_rxd)) diff --git a/src/mame/drivers/selz80.cpp b/src/mame/drivers/selz80.cpp index 1c47c6fc10a..281731e6e2f 100644 --- a/src/mame/drivers/selz80.cpp +++ b/src/mame/drivers/selz80.cpp @@ -232,10 +232,10 @@ MACHINE_CONFIG_START(selz80_state::selz80) m_clock->signal_handler().set("uart", FUNC(i8251_device::write_txc)); m_clock->signal_handler().append("uart", FUNC(i8251_device::write_rxc)); - MCFG_DEVICE_ADD("uart", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) + i8251_device &uart(I8251(config, "uart", 0)); + uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + uart.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("uart", i8251_device, write_rxd)) diff --git a/src/mame/drivers/sg1000.cpp b/src/mame/drivers/sg1000.cpp index ee03d34b849..c427823a80a 100644 --- a/src/mame/drivers/sg1000.cpp +++ b/src/mame/drivers/sg1000.cpp @@ -641,10 +641,10 @@ MACHINE_CONFIG_START(sf7000_state::sf7000) MCFG_I8255_OUT_PORTB_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, sf7000_state, ppi_pc_w)) - MCFG_DEVICE_ADD(UPD8251_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) + i8251_device &upd8251(I8251(config, UPD8251_TAG, 0)); + upd8251.txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + upd8251.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + upd8251.rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(UPD8251_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/sm7238.cpp b/src/mame/drivers/sm7238.cpp index e66fe8221db..42865b42358 100644 --- a/src/mame/drivers/sm7238.cpp +++ b/src/mame/drivers/sm7238.cpp @@ -403,11 +403,11 @@ MACHINE_CONFIG_START(sm7238_state::sm7238) MCFG_PIT8253_OUT2_HANDLER(WRITELINE("i8251line", i8251_device, write_rxc)) // serial connection to host - MCFG_DEVICE_ADD("i8251line", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir1_w)) + I8251(config, m_i8251line, 0); + m_i8251line->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_i8251line->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + m_i8251line->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + m_i8251line->rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir1_w)); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "null_modem") MCFG_RS232_RXD_HANDLER(WRITELINE("i8251line", i8251_device, write_rxd)) @@ -415,17 +415,17 @@ MACHINE_CONFIG_START(sm7238_state::sm7238) MCFG_RS232_DSR_HANDLER(WRITELINE("i8251line", i8251_device, write_dsr)) // serial connection to KM-035 keyboard - MCFG_DEVICE_ADD("i8251kbd", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("keyboard", km035_device, write_rxd)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir3_w)) + I8251(config, m_i8251kbd, 0); + m_i8251kbd->txd_handler().set("keyboard", FUNC(km035_device::write_rxd)); + m_i8251kbd->rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir3_w)); MCFG_DEVICE_ADD("keyboard", KM035, 0) MCFG_KM035_TX_HANDLER(WRITELINE("i8251kbd", i8251_device, write_rxd)) MCFG_KM035_RTS_HANDLER(WRITELINE("i8251kbd", i8251_device, write_cts)) // serial connection to printer - MCFG_DEVICE_ADD("i8251prn", I8251, 0) - MCFG_I8251_RXRDY_HANDLER(WRITELINE("pic8259", pic8259_device, ir3_w)) + I8251(config, m_i8251prn, 0); + m_i8251prn->rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir3_w)); MCFG_DEVICE_ADD("prtr", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("i8251prn", i8251_device, write_rxd)) diff --git a/src/mame/drivers/softbox.cpp b/src/mame/drivers/softbox.cpp index eb5e18aa604..1838468f8c0 100644 --- a/src/mame/drivers/softbox.cpp +++ b/src/mame/drivers/softbox.cpp @@ -367,10 +367,10 @@ MACHINE_CONFIG_START(softbox_state::softbox) MCFG_DEVICE_IO_MAP(softbox_io) // devices - MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) + i8251_device &i8251(I8251(config, I8251_TAG, 0)); + i8251.txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + i8251.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + i8251.rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/sys9002.cpp b/src/mame/drivers/sys9002.cpp index 2b2bba65452..70c16c2e744 100644 --- a/src/mame/drivers/sys9002.cpp +++ b/src/mame/drivers/sys9002.cpp @@ -151,10 +151,10 @@ MACHINE_CONFIG_START(sys9002_state::sys9002) uart_clock.signal_handler().append("uart2", FUNC(i8251_device::write_txc)); uart_clock.signal_handler().append("uart2", FUNC(i8251_device::write_rxc)); - MCFG_DEVICE_ADD("uart1", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232a", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232a", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232a", rs232_port_device, write_rts)) + i8251_device &uart1(I8251(config, "uart1", 0)); + uart1.txd_handler().set("rs232a", FUNC(rs232_port_device::write_txd)); + uart1.dtr_handler().set("rs232a", FUNC(rs232_port_device::write_dtr)); + uart1.rts_handler().set("rs232a", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("uart1", i8251_device, write_rxd)) @@ -162,10 +162,10 @@ MACHINE_CONFIG_START(sys9002_state::sys9002) MCFG_RS232_CTS_HANDLER(WRITELINE("uart1", i8251_device, write_cts)) MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", uart1) - MCFG_DEVICE_ADD("uart2", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232b", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232b", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232b", rs232_port_device, write_rts)) + i8251_device &uart2(I8251(config, "uart2", 0)); + uart2.txd_handler().set("rs232b", FUNC(rs232_port_device::write_txd)); + uart2.dtr_handler().set("rs232b", FUNC(rs232_port_device::write_dtr)); + uart2.rts_handler().set("rs232b", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("rs232b", RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE("uart2", i8251_device, write_rxd)) diff --git a/src/mame/drivers/tandy2k.cpp b/src/mame/drivers/tandy2k.cpp index d300282f49e..bd793478727 100644 --- a/src/mame/drivers/tandy2k.cpp +++ b/src/mame/drivers/tandy2k.cpp @@ -824,12 +824,12 @@ MACHINE_CONFIG_START(tandy2k_state::tandy2k) MCFG_I8255_IN_PORTB_CB(READ8(*this, tandy2k_state, ppi_pb_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, tandy2k_state, ppi_pc_w)) - MCFG_DEVICE_ADD(I8251A_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, tandy2k_state, rxrdy_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, tandy2k_state, txrdy_w)) + I8251(config, m_uart, 0); + m_uart->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + m_uart->dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + m_uart->rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); + m_uart->rxrdy_handler().set(FUNC(tandy2k_state::rxrdy_w)); + m_uart->txrdy_handler().set(FUNC(tandy2k_state::txrdy_w)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(I8251A_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/tsispch.cpp b/src/mame/drivers/tsispch.cpp index 22e88d94a70..e6d8fc853bc 100644 --- a/src/mame/drivers/tsispch.cpp +++ b/src/mame/drivers/tsispch.cpp @@ -392,13 +392,13 @@ MACHINE_CONFIG_START(tsispch_state::prose2k) MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) /* uarts */ - MCFG_DEVICE_ADD("i8251a_u15", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, tsispch_state, i8251_rxrdy_int)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, tsispch_state, i8251_txrdy_int)) - MCFG_I8251_TXEMPTY_HANDLER(WRITELINE(*this, tsispch_state, i8251_txempty_int)) + i8251_device &u15(I8251(config, "i8251a_u15", 0)); + u15.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + u15.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + u15.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + u15.rxrdy_handler().set(FUNC(tsispch_state::i8251_rxrdy_int)); + u15.txrdy_handler().set(FUNC(tsispch_state::i8251_txrdy_int)); + u15.txempty_handler().set(FUNC(tsispch_state::i8251_txempty_int)); clock_device &clock(CLOCK(config, "baudclock", 153600)); clock.signal_handler().set("i8251a_u15", FUNC(i8251_device::write_txc)); diff --git a/src/mame/drivers/v102.cpp b/src/mame/drivers/v102.cpp index 0feb16f30cc..210c1815ac6 100644 --- a/src/mame/drivers/v102.cpp +++ b/src/mame/drivers/v102.cpp @@ -96,8 +96,8 @@ MACHINE_CONFIG_START(v102_state::v102) upd7201_new_device& mpsc(UPD7201_NEW(config, "mpsc", XTAL(18'575'000) / 5)); // divider not verified mpsc.out_int_callback().set("mainirq", FUNC(input_merger_device::in_w<0>)); - MCFG_DEVICE_ADD("usart", I8251, XTAL(18'575'000) / 5) // divider not verified - MCFG_I8251_RXRDY_HANDLER(WRITELINE("mainirq", input_merger_device, in_w<1>)) + i8251_device &usart(I8251(config, "usart", XTAL(18'575'000) / 5)); // divider not verified + usart.rxrdy_handler().set("mainirq", FUNC(input_merger_device::in_w<1>)); MCFG_INPUT_MERGER_ANY_HIGH("mainirq") MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", 0)) diff --git a/src/mame/drivers/v1050.cpp b/src/mame/drivers/v1050.cpp index f80a152f79d..1bc28621983 100644 --- a/src/mame/drivers/v1050.cpp +++ b/src/mame/drivers/v1050.cpp @@ -1075,9 +1075,9 @@ MACHINE_CONFIG_START(v1050_state::v1050) MCFG_I8255_IN_PORTA_CB(READ8(I8255A_DISP_TAG, i8255_device, pb_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, v1050_state, m6502_ppi_pc_w)) - MCFG_DEVICE_ADD(I8251A_KB_TAG, I8251, 0/*16_MHz_XTAL/8,*/) - MCFG_I8251_TXD_HANDLER(WRITELINE(V1050_KEYBOARD_TAG, v1050_keyboard_device, si_w)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, v1050_state, kb_rxrdy_w)) + I8251(config, m_uart_kb, 0/*16_MHz_XTAL/8,*/); + m_uart_kb->txd_handler().set(V1050_KEYBOARD_TAG, FUNC(v1050_keyboard_device::si_w)); + m_uart_kb->rxrdy_handler().set(FUNC(v1050_state::kb_rxrdy_w)); MCFG_DEVICE_ADD(CLOCK_KB_TAG, CLOCK, 16_MHz_XTAL/4/13/8) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, v1050_state, write_keyboard_clock)) @@ -1086,12 +1086,12 @@ MACHINE_CONFIG_START(v1050_state::v1050) MCFG_DEVICE_ADD(V1050_KEYBOARD_TAG, V1050_KEYBOARD, 0) MCFG_V1050_KEYBOARD_OUT_TX_HANDLER(WRITELINE(I8251A_KB_TAG, i8251_device, write_rxd)) - MCFG_DEVICE_ADD(I8251A_SIO_TAG, I8251, 0/*16_MHz_XTAL/8,*/) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, v1050_state, sio_rxrdy_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, v1050_state, sio_txrdy_w)) + I8251(config, m_uart_sio, 0/*16_MHz_XTAL/8,*/); + m_uart_sio->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + m_uart_sio->dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + m_uart_sio->rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); + m_uart_sio->rxrdy_handler().set(FUNC(v1050_state::sio_rxrdy_w)); + m_uart_sio->txrdy_handler().set(FUNC(v1050_state::sio_txrdy_w)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(I8251A_SIO_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/v550.cpp b/src/mame/drivers/v550.cpp index e140b347155..546efa12438 100644 --- a/src/mame/drivers/v550.cpp +++ b/src/mame/drivers/v550.cpp @@ -34,6 +34,7 @@ public: , m_maincpu(*this, "maincpu") , m_screen(*this, "screen") , m_chargen(*this, "chargen") + , m_usart(*this, "usart") { } void v550(machine_config &config); @@ -52,6 +53,7 @@ private: required_device m_maincpu; required_device m_screen; required_region_ptr m_chargen; + required_device m_usart; }; @@ -68,8 +70,8 @@ void v550_state::io_map(address_map &map) map(0x00, 0x01).rw("gdc", FUNC(upd7220_device::read), FUNC(upd7220_device::write)); map(0x10, 0x10).w("brg1", FUNC(com8116_device::stt_str_w)); map(0x20, 0x23).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0x30, 0x30).rw("usart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); - map(0x31, 0x31).rw("usart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x30, 0x30).rw(m_usart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x31, 0x31).rw(m_usart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); map(0x40, 0x40).rw("mpsc", FUNC(upd7201_new_device::da_r), FUNC(upd7201_new_device::da_w)); map(0x41, 0x41).rw("mpsc", FUNC(upd7201_new_device::ca_r), FUNC(upd7201_new_device::ca_w)); map(0x48, 0x48).rw("mpsc", FUNC(upd7201_new_device::db_r), FUNC(upd7201_new_device::db_w)); @@ -102,7 +104,7 @@ INPUT_PORTS_END void v550_state::machine_start() { - subdevice("usart")->write_cts(0); + m_usart->write_cts(0); } MACHINE_CONFIG_START(v550_state::v550) @@ -117,8 +119,8 @@ MACHINE_CONFIG_START(v550_state::v550) MCFG_DEVICE_ADD("ppi", I8255, 0) // NEC D8255AC-5 - MCFG_DEVICE_ADD("usart", I8251, 34.846_MHz_XTAL / 16) // NEC D8251AC - MCFG_I8251_RXRDY_HANDLER(WRITELINE("mainint", input_merger_device, in_w<1>)) + I8251(config, m_usart, 34.846_MHz_XTAL / 16); // NEC D8251AC + m_usart->rxrdy_handler().set("mainint", FUNC(input_merger_device::in_w<1>)); upd7201_new_device& mpsc(UPD7201_NEW(config, "mpsc", 34.846_MHz_XTAL / 16)); // NEC D7201C mpsc.out_int_callback().set("mainint", FUNC(input_merger_device::in_w<0>)); diff --git a/src/mame/drivers/vector4.cpp b/src/mame/drivers/vector4.cpp index ed4b62df819..e73108e1973 100644 --- a/src/mame/drivers/vector4.cpp +++ b/src/mame/drivers/vector4.cpp @@ -82,30 +82,30 @@ MACHINE_CONFIG_START(vector4_state::vector4) uart_clock.signal_handler().append("uart3", FUNC(i8251_device::write_txc)); uart_clock.signal_handler().append("uart3", FUNC(i8251_device::write_rxc)); - MCFG_DEVICE_ADD("uart1", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232a", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232a", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232a", rs232_port_device, write_rts)) + i8251_device &uart1(I8251(config, "uart1", 0)); + uart1.txd_handler().set("rs232a", FUNC(rs232_port_device::write_txd)); + uart1.dtr_handler().set("rs232a", FUNC(rs232_port_device::write_dtr)); + uart1.rts_handler().set("rs232a", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE("uart1", i8251_device, write_rxd)) MCFG_RS232_DSR_HANDLER(WRITELINE("uart1", i8251_device, write_dsr)) MCFG_RS232_CTS_HANDLER(WRITELINE("uart1", i8251_device, write_cts)) - MCFG_DEVICE_ADD("uart2", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232b", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232b", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232b", rs232_port_device, write_rts)) + i8251_device &uart2(I8251(config, "uart2", 0)); + uart2.txd_handler().set("rs232b", FUNC(rs232_port_device::write_txd)); + uart2.dtr_handler().set("rs232b", FUNC(rs232_port_device::write_dtr)); + uart2.rts_handler().set("rs232b", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("rs232b", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("uart2", i8251_device, write_rxd)) MCFG_RS232_DSR_HANDLER(WRITELINE("uart2", i8251_device, write_dsr)) MCFG_RS232_CTS_HANDLER(WRITELINE("uart2", i8251_device, write_cts)) - MCFG_DEVICE_ADD("uart3", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232c", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232c", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232c", rs232_port_device, write_rts)) + i8251_device &uart3(I8251(config, "uart3", 0)); + uart3.txd_handler().set("rs232c", FUNC(rs232_port_device::write_txd)); + uart3.dtr_handler().set("rs232c", FUNC(rs232_port_device::write_dtr)); + uart3.rts_handler().set("rs232c", FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD("rs232c", RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE("uart3", i8251_device, write_rxd)) diff --git a/src/mame/drivers/vixen.cpp b/src/mame/drivers/vixen.cpp index 19455fbff65..9f0bf04d2be 100644 --- a/src/mame/drivers/vixen.cpp +++ b/src/mame/drivers/vixen.cpp @@ -775,12 +775,12 @@ MACHINE_CONFIG_START(vixen_state::vixen) i8155_io.out_pc_callback().set(FUNC(vixen_state::io_i8155_pc_w)); i8155_io.out_to_callback().set(FUNC(vixen_state::io_i8155_to_w)); - MCFG_DEVICE_ADD(P8251A_TAG, I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_TAG, rs232_port_device, write_rts)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, vixen_state, rxrdy_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, vixen_state, txrdy_w)) + I8251(config, m_usart, 0); + m_usart->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); + m_usart->dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); + m_usart->rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); + m_usart->rxrdy_handler().set(FUNC(vixen_state::rxrdy_w)); + m_usart->txrdy_handler().set(FUNC(vixen_state::txrdy_w)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(P8251A_TAG, i8251_device, write_rxd)) diff --git a/src/mame/drivers/votrpss.cpp b/src/mame/drivers/votrpss.cpp index 8ea03ea7a6d..ffa77f2d290 100644 --- a/src/mame/drivers/votrpss.cpp +++ b/src/mame/drivers/votrpss.cpp @@ -266,10 +266,10 @@ MACHINE_CONFIG_START(votrpss_state::votrpss) MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0) MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(votrpss_state, kbd_put)) - MCFG_DEVICE_ADD("uart", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) + i8251_device &uart(I8251(config, "uart", 0)); + uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + uart.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); // when serial is chosen, and you select terminal, nothing shows (by design). You can only type commands in. MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) diff --git a/src/mame/drivers/vt240.cpp b/src/mame/drivers/vt240.cpp index b530fb2fb55..938eaf4142b 100644 --- a/src/mame/drivers/vt240.cpp +++ b/src/mame/drivers/vt240.cpp @@ -687,11 +687,11 @@ MACHINE_CONFIG_START(vt240_state::vt240) MCFG_MC68681_B_TX_CALLBACK(WRITELINE("printer", rs232_port_device, write_txd)) MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, vt240_state, duartout_w)) - MCFG_DEVICE_ADD("i8251", I8251, 0) - MCFG_I8251_TXD_HANDLER(WRITELINE(*this, vt240_state, tx_w)) - MCFG_I8251_DTR_HANDLER(WRITELINE(*this, vt240_state, lben_w)) - MCFG_I8251_RXRDY_HANDLER(WRITELINE(*this, vt240_state, irq9_w)) - MCFG_I8251_TXRDY_HANDLER(WRITELINE(*this, vt240_state, irq7_w)) + I8251(config, m_i8251, 0); + m_i8251->txd_handler().set(FUNC(vt240_state::tx_w)); + m_i8251->dtr_handler().set(FUNC(vt240_state::lben_w)); + m_i8251->rxrdy_handler().set(FUNC(vt240_state::irq9_w)); + m_i8251->txrdy_handler().set(FUNC(vt240_state::irq7_w)); MCFG_DEVICE_ADD("lk201", LK201, 0) MCFG_LK201_TX_HANDLER(WRITELINE("i8251", i8251_device, write_rxd)) @@ -718,9 +718,8 @@ MACHINE_CONFIG_START(vt240_state::mc7105) MCFG_DEVICE_ADD("ms7004", MS7004, 0) MCFG_MS7004_TX_HANDLER(WRITELINE("i8251", i8251_device, write_rxd)) - MCFG_DEVICE_MODIFY("i8251") - MCFG_I8251_TXD_HANDLER(NOOP) - //MCFG_I8251_TXD_HANDLER(WRITELINE("ms7004", ms7004_device, rx_w)) + m_i8251->txd_handler().set_nop(); + //m_i8251->txd_handler().set("ms7004", FUNC(ms7004_device::rx_w)); // baud rate is supposed to be 4800 but keyboard is slightly faster MCFG_DEVICE_REMOVE("keyboard_clock") diff --git a/src/mame/drivers/xor100.cpp b/src/mame/drivers/xor100.cpp index 471f5353922..3bfebda64f9 100644 --- a/src/mame/drivers/xor100.cpp +++ b/src/mame/drivers/xor100.cpp @@ -486,24 +486,24 @@ MACHINE_CONFIG_START(xor100_state::xor100) MCFG_DEVICE_IO_MAP(xor100_io) /* devices */ - MCFG_DEVICE_ADD(I8251_A_TAG, I8251, 0/*8_MHz_XTAL / 2,*/) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_A_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_A_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_A_TAG, rs232_port_device, write_rts)) + I8251(config, m_uart_a, 0/*8_MHz_XTAL / 2,*/); + m_uart_a->txd_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_txd)); + m_uart_a->dtr_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_dtr)); + m_uart_a->rts_handler().set(RS232_A_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_A_TAG, i8251_device, write_rxd)) - MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_A_TAG, i8251_device, write_dsr)) + MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart_a, i8251_device, write_rxd)) + MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart_a, i8251_device, write_dsr)) - MCFG_DEVICE_ADD(I8251_B_TAG, I8251, 0/*8_MHz_XTAL / 2,*/) - MCFG_I8251_TXD_HANDLER(WRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) - MCFG_I8251_DTR_HANDLER(WRITELINE(RS232_B_TAG, rs232_port_device, write_dtr)) - MCFG_I8251_RTS_HANDLER(WRITELINE(RS232_B_TAG, rs232_port_device, write_rts)) + I8251(config, m_uart_b, 0/*8_MHz_XTAL / 2,*/); + m_uart_b->txd_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd)); + m_uart_b->dtr_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_dtr)); + m_uart_b->rts_handler().set(RS232_B_TAG, FUNC(rs232_port_device::write_rts)); MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE(I8251_B_TAG, i8251_device, write_rxd)) - MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_B_TAG, i8251_device, write_dsr)) - MCFG_RS232_CTS_HANDLER(WRITELINE(I8251_B_TAG, i8251_device, write_cts)) + MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart_b, i8251_device, write_rxd)) + MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart_b, i8251_device, write_dsr)) + MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart_b, i8251_device, write_cts)) com8116_device &brg(COM8116(config, COM5016_TAG, 5.0688_MHz_XTAL)); brg.fr_handler().set(m_uart_a, FUNC(i8251_device::write_txc)); diff --git a/src/mame/includes/pmd85.h b/src/mame/includes/pmd85.h index 26d5a7c9723..8d7e254b1a7 100644 --- a/src/mame/includes/pmd85.h +++ b/src/mame/includes/pmd85.h @@ -53,7 +53,7 @@ public: m_leds(*this, "led%u", 0U) { } - void pmd85(machine_config &config); + void pmd85(machine_config &config, bool with_uart = true); void pmd851(machine_config &config); void pmd853(machine_config &config); void pmd852a(machine_config &config); -- cgit v1.2.3