diff --git a/src/devices/bus/compucolor/floppy.h b/src/devices/bus/compucolor/floppy.h index e879517a30b..63e9c78782a 100644 --- a/src/devices/bus/compucolor/floppy.h +++ b/src/devices/bus/compucolor/floppy.h @@ -16,17 +16,6 @@ #include "imagedev/floppy.h" - -//************************************************************************** -// INTERFACE MACROS -//************************************************************************** - -#define MCFG_COMPUCOLOR_FLOPPY_PORT_ADD(_tag, _slot_intf, _def_slot) \ - MCFG_DEVICE_ADD(_tag, COMPUCOLOR_FLOPPY_PORT, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) - - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -50,6 +39,15 @@ protected: class compucolor_floppy_port_device : public rs232_port_device { public: + template + compucolor_floppy_port_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt) + : rs232_port_device(mconfig, tag, owner, 0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } compucolor_floppy_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_WRITE_LINE_MEMBER( rw_w ) { if (m_dev) m_dev->rw_w(state); } diff --git a/src/devices/machine/mb87030.cpp b/src/devices/machine/mb87030.cpp index 8cafde3ba11..41b08682e81 100644 --- a/src/devices/machine/mb87030.cpp +++ b/src/devices/machine/mb87030.cpp @@ -408,6 +408,9 @@ void mb87030_device::step(bool timeout) case State::TransferSendAck: + if (!(ctrl & S_INP)) + m_temp = data; + scsi_set_ctrl(S_ACK, S_ACK); scsi_bus->ctrl_wait(scsi_refid, 0, S_REQ); @@ -582,7 +585,7 @@ WRITE8_MEMBER(mb87030_device::scmd_w) case SCMD_CMD_SET_ACK_REQ: LOG("%s: Set ACK/REQ\n", __FUNCTION__); if (m_ssts & SSTS_INIT_CONNECTED) { - if (m_pctl & 1) { + if (scsi_bus->ctrl_r() & S_INP) { m_temp = scsi_bus->data_r(); } else { scsi_bus->data_w(scsi_refid, m_temp); @@ -701,7 +704,7 @@ WRITE8_MEMBER(mb87030_device::dreg_w) READ8_MEMBER(mb87030_device::temp_r) { - m_temp = scsi_bus->data_r(); + step(false); LOG("%s: %02X\n", __FUNCTION__, m_temp); return m_temp; diff --git a/src/devices/machine/tms9914.h b/src/devices/machine/tms9914.h index 08b413af2d9..14df9d80647 100644 --- a/src/devices/machine/tms9914.h +++ b/src/devices/machine/tms9914.h @@ -35,44 +35,6 @@ #pragma once -// Set read and write callbacks to access DIO bus on IEEE-488 -#define MCFG_TMS9914_DIO_READWRITE_CB(_read , _write) \ - downcast(*device).set_dio_read_cb(DEVCB_##_read); \ - downcast(*device).set_dio_write_cb(DEVCB_##_write); - -// Set write callbacks to access uniline signals on IEEE-488 -#define MCFG_TMS9914_EOI_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(tms9914_device::IEEE_488_EOI , DEVCB_##_write); - -#define MCFG_TMS9914_DAV_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(tms9914_device::IEEE_488_DAV , DEVCB_##_write); - -#define MCFG_TMS9914_NRFD_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(tms9914_device::IEEE_488_NRFD , DEVCB_##_write); - -#define MCFG_TMS9914_NDAC_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(tms9914_device::IEEE_488_NDAC , DEVCB_##_write); - -#define MCFG_TMS9914_IFC_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(tms9914_device::IEEE_488_IFC , DEVCB_##_write); - -#define MCFG_TMS9914_SRQ_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(tms9914_device::IEEE_488_SRQ , DEVCB_##_write); - -#define MCFG_TMS9914_ATN_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(tms9914_device::IEEE_488_ATN , DEVCB_##_write); - -#define MCFG_TMS9914_REN_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(tms9914_device::IEEE_488_REN , DEVCB_##_write); - -// Set write callback for INT signal -#define MCFG_TMS9914_INT_WRITE_CB(_write) \ - downcast(*device).set_int_write_cb(DEVCB_##_write); - -// Set write callback for ACCRQ signal -#define MCFG_TMS9914_ACCRQ_WRITE_CB(_write) \ - downcast(*device).set_accrq_write_cb(DEVCB_##_write); - class tms9914_device : public device_t { public: @@ -92,23 +54,11 @@ public: IEEE_488_SIGNAL_COUNT }; - template devcb_base& set_dio_read_cb(Object &&cb) - { return m_dio_read_func.set_callback(std::forward(cb)); } - - template devcb_base& set_dio_write_cb(Object &&cb) - { return m_dio_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_488_signal_write_cb(ieee_488_signal_t signal , Object &&cb) - { return m_signal_wr_fns[ signal ].set_callback(std::forward(cb)); } - - template devcb_base& set_int_write_cb(Object &&cb) - { return m_int_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_accrq_write_cb(Object &&cb) - { return m_accrq_write_func.set_callback(std::forward(cb)); } - + // Set read and write callbacks to access DIO bus on IEEE-488 auto dio_read_cb() { return m_dio_read_func.bind(); } auto dio_write_cb() { return m_dio_write_func.bind(); } + + // Set write callbacks to access uniline signals on IEEE-488 auto eoi_write_cb() { return m_signal_wr_fns[IEEE_488_EOI].bind(); } auto dav_write_cb() { return m_signal_wr_fns[IEEE_488_DAV].bind(); } auto nrfd_write_cb() { return m_signal_wr_fns[IEEE_488_NRFD].bind(); } @@ -118,7 +68,10 @@ public: auto atn_write_cb() { return m_signal_wr_fns[IEEE_488_ATN].bind(); } auto ren_write_cb() { return m_signal_wr_fns[IEEE_488_REN].bind(); } + // Set write callback for INT signal auto int_write_cb() { return m_int_write_func.bind(); } + + // Set write callback for ACCRQ signal auto accrq_write_cb() { return m_accrq_write_func.bind(); } DECLARE_WRITE_LINE_MEMBER(eoi_w); diff --git a/src/mame/drivers/bw12.cpp b/src/mame/drivers/bw12.cpp index 1a26bd62754..dc4b8ad955e 100644 --- a/src/mame/drivers/bw12.cpp +++ b/src/mame/drivers/bw12.cpp @@ -602,7 +602,7 @@ MACHINE_CONFIG_START(bw12_state::common) MCFG_PIT8253_CLK0(XTAL(1'843'200)) MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, bw12_state, pit_out0_w)) MCFG_PIT8253_CLK1(XTAL(1'843'200)) - MCFG_PIT8253_OUT1_HANDLER(WRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w)) + MCFG_PIT8253_OUT1_HANDLER(WRITELINE(m_sio, z80dart_device, rxtxcb_w)) MCFG_PIT8253_CLK2(XTAL(1'843'200)) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, bw12_state, pit_out2_w)) @@ -620,15 +620,15 @@ MACHINE_CONFIG_START(bw12_state::common) m_kbc->control().set(FUNC(bw12_state::ay3600_control_r)); m_kbc->data_ready().set(FUNC(bw12_state::ay3600_data_ready_w)); - MCFG_DEVICE_ADD(RS232_A_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(Z80SIO_TAG, z80dart_device, rxa_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(Z80SIO_TAG, z80dart_device, dcda_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE(Z80SIO_TAG, z80dart_device, ctsa_w)) + rs232_port_device &rs232a(RS232_PORT(config, RS232_A_TAG, default_rs232_devices, nullptr)); + rs232a.rxd_handler().set(m_sio, FUNC(z80dart_device::rxa_w)); + rs232a.dcd_handler().set(m_sio, FUNC(z80dart_device::dcda_w)); + rs232a.cts_handler().set(m_sio, FUNC(z80dart_device::ctsa_w)); - MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(Z80SIO_TAG, z80dart_device, rxb_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(Z80SIO_TAG, z80dart_device, dcdb_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE(Z80SIO_TAG, z80dart_device, ctsb_w)) + rs232_port_device &rs232b(RS232_PORT(config, RS232_B_TAG, default_rs232_devices, nullptr)); + rs232b.rxd_handler().set(m_sio, FUNC(z80dart_device::rxb_w)); + rs232b.dcd_handler().set(m_sio, FUNC(z80dart_device::dcdb_w)); + rs232b.cts_handler().set(m_sio, FUNC(z80dart_device::ctsb_w)); /* printer */ MCFG_DEVICE_ADD(CENTRONICS_TAG, CENTRONICS, centronics_devices, "printer") diff --git a/src/mame/drivers/bw2.cpp b/src/mame/drivers/bw2.cpp index 564a3d000af..4840fde41f5 100644 --- a/src/mame/drivers/bw2.cpp +++ b/src/mame/drivers/bw2.cpp @@ -588,9 +588,9 @@ MACHINE_CONFIG_START(bw2_state::bw2) 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)) - MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart, i8251_device, write_dsr)) + rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); + rs232.rxd_handler().set(m_uart, FUNC(i8251_device::write_rxd)); + rs232.dsr_handler().set(m_uart, FUNC(i8251_device::write_dsr)); WD2797(config, m_fdc, 16_MHz_XTAL / 16); m_fdc->intrq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); diff --git a/src/mame/drivers/c900.cpp b/src/mame/drivers/c900.cpp index 40ba63b7b8a..6be497e54ce 100644 --- a/src/mame/drivers/c900.cpp +++ b/src/mame/drivers/c900.cpp @@ -112,9 +112,9 @@ MACHINE_CONFIG_START(c900_state::c900) scc.out_rtsb_callback().set("rs232", FUNC(rs232_port_device::write_rts)); //scc.out_int_callback().set("rs232", FUNC(c900_state::scc_int)); - MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER (WRITELINE ("scc", scc8030_device, rxb_w)) - MCFG_RS232_CTS_HANDLER (WRITELINE ("scc", scc8030_device, ctsb_w)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); + rs232.rxd_handler().set("scc", FUNC(scc8030_device::rxb_w)); + rs232.cts_handler().set("scc", FUNC(scc8030_device::ctsb_w)); MACHINE_CONFIG_END ROM_START( c900 ) diff --git a/src/mame/drivers/cgc7900.cpp b/src/mame/drivers/cgc7900.cpp index d14c727179c..ae9e76055a4 100644 --- a/src/mame/drivers/cgc7900.cpp +++ b/src/mame/drivers/cgc7900.cpp @@ -505,9 +505,9 @@ MACHINE_CONFIG_START(cgc7900_state::cgc7900) 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)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "null_modem")); + rs232.rxd_handler().set(m_i8251_0, FUNC(i8251_device::write_rxd)); + rs232.dsr_handler().set(m_i8251_0, FUNC(i8251_device::write_dsr)); I8251(config, m_i8251_1, 0); m_i8251_1->txd_handler().set("rs449", FUNC(rs232_port_device::write_txd)); @@ -516,9 +516,9 @@ MACHINE_CONFIG_START(cgc7900_state::cgc7900) 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)) - MCFG_RS232_DSR_HANDLER(WRITELINE(INS8251_1_TAG, i8251_device, write_dsr)) + rs232_port_device &rs449(RS232_PORT(config, "rs449", default_rs232_devices, nullptr)); + rs449.rxd_handler().set(m_i8251_1, FUNC(i8251_device::write_rxd)); + rs449.dsr_handler().set(m_i8251_1, FUNC(i8251_device::write_dsr)); MACHINE_CONFIG_END /*************************************************************************** diff --git a/src/mame/drivers/cgenie.cpp b/src/mame/drivers/cgenie.cpp index d725aff113d..491d06eca38 100644 --- a/src/mame/drivers/cgenie.cpp +++ b/src/mame/drivers/cgenie.cpp @@ -472,9 +472,9 @@ MACHINE_CONFIG_START(cgenie_state::cgenie) MCFG_SOFTWARE_LIST_ADD("cass_list", "cgenie_cass") // serial port - MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(*this, cgenie_state, rs232_rx_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(*this, cgenie_state, rs232_dcd_w)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr)); + rs232.rxd_handler().set(FUNC(cgenie_state::rs232_rx_w)); + rs232.dcd_handler().set(FUNC(cgenie_state::rs232_dcd_w)); // cartridge expansion slot MCFG_CG_EXP_SLOT_ADD("exp") diff --git a/src/mame/drivers/cit101.cpp b/src/mame/drivers/cit101.cpp index 0f450b1276b..5d1049db3c2 100644 --- a/src/mame/drivers/cit101.cpp +++ b/src/mame/drivers/cit101.cpp @@ -69,7 +69,6 @@ class cit101_state : public driver_device public: cit101_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") , m_screen(*this, "screen") , m_nvr(*this, "nvr") , m_comuart(*this, "comuart") @@ -108,7 +107,6 @@ private: bool m_blink; u8 m_brightness; - required_device m_maincpu; required_device m_screen; required_device m_nvr; required_device m_comuart; @@ -329,18 +327,19 @@ static INPUT_PORTS_START( cit101 ) INPUT_PORTS_END -MACHINE_CONFIG_START(cit101_state::cit101) - MCFG_DEVICE_ADD("maincpu", I8085A, 6.144_MHz_XTAL) - MCFG_DEVICE_PROGRAM_MAP(mem_map) - MCFG_DEVICE_IO_MAP(io_map) - MCFG_I8085A_SID(CONSTANT(0)) // used to time NVR reads - MCFG_I8085A_SOD(WRITELINE(*this, cit101_state, blink_w)) +void cit101_state::cit101(machine_config &config) +{ + i8085a_cpu_device &maincpu(I8085A(config, "maincpu", 6.144_MHz_XTAL)); + maincpu.set_addrmap(AS_PROGRAM, &cit101_state::mem_map); + maincpu.set_addrmap(AS_IO, &cit101_state::io_map); + maincpu.in_sid_func().set_constant(0); // used to time NVR reads + maincpu.out_sod_func().set(FUNC(cit101_state::blink_w)); - MCFG_SCREEN_ADD("screen", RASTER) - //MCFG_SCREEN_RAW_PARAMS(14.976_MHz_XTAL, 960, 0, 800, 260, 0, 240) - MCFG_SCREEN_RAW_PARAMS(22.464_MHz_XTAL, 1440, 0, 1188, 260, 0, 240) - MCFG_SCREEN_UPDATE_DRIVER(cit101_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", I8085_RST75_LINE)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + //m_screen->set_raw(14.976_MHz_XTAL, 960, 0, 800, 260, 0, 240); + m_screen->set_raw(22.464_MHz_XTAL, 1440, 0, 1188, 260, 0, 240); + m_screen->set_screen_update(FUNC(cit101_state::screen_update)); + m_screen->screen_vblank().set_inputline("maincpu", I8085_RST75_LINE); I8251(config, m_comuart, 6.144_MHz_XTAL / 2); m_comuart->txd_handler().set("comm", FUNC(rs232_port_device::write_txd)); @@ -349,9 +348,9 @@ MACHINE_CONFIG_START(cit101_state::cit101) 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)) - MCFG_RS232_DSR_HANDLER(WRITELINE("comuart", i8251_device, write_dsr)) + rs232_port_device &comm(RS232_PORT(config, "comm", default_rs232_devices, nullptr)); + comm.rxd_handler().set("comuart", FUNC(i8251_device::write_rxd)); + comm.dsr_handler().set("comuart", FUNC(i8251_device::write_dsr)); // 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 @@ -360,26 +359,24 @@ MACHINE_CONFIG_START(cit101_state::cit101) 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)) - MCFG_RS232_CTS_HANDLER(WRITELINE("auxuart", i8251_device, write_cts)) + rs232_port_device &printer(RS232_PORT(config, "printer", default_rs232_devices, nullptr)); + printer.rxd_handler().set("auxuart", FUNC(i8251_device::write_rxd)); + printer.cts_handler().set("auxuart", FUNC(i8251_device::write_cts)); - MCFG_INPUT_MERGER_ANY_HIGH("uartint") - MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", I8085_RST55_LINE)) + INPUT_MERGER_ANY_HIGH(config, "uartint").output_handler().set_inputline("maincpu", I8085_RST55_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)) + CIT101_HLE_KEYBOARD(config, "keyboard").txd_callback().set("kbduart", FUNC(i8251_device::write_rxd)); - MCFG_DEVICE_ADD("pit0", PIT8253, 0) - MCFG_PIT8253_CLK0(6.144_MHz_XTAL / 4) - MCFG_PIT8253_CLK1(6.144_MHz_XTAL / 4) - //MCFG_PIT8253_CLK2(6.144_MHz_XTAL / 4) - MCFG_PIT8253_OUT0_HANDLER(WRITELINE("auxuart", i8251_device, write_txc)) - MCFG_PIT8253_OUT1_HANDLER(WRITELINE("auxuart", i8251_device, write_rxc)) + pit8253_device &pit0(PIT8253(config, "pit0", 0)); + pit0.set_clk<0>(6.144_MHz_XTAL / 4); + pit0.set_clk<1>(6.144_MHz_XTAL / 4); + //pit0.set_clk<2>(6.144_MHz_XTAL / 4); + pit0.out_handler<0>().set("auxuart", FUNC(i8251_device::write_txc)); + pit0.out_handler<1>().set("auxuart", FUNC(i8251_device::write_rxc)); // OUT2 might be used for an internal expansion similar to the VT100 STP. // The output appears to be fixed to a 307.2 kHz rate; turning this off boosts driver performance. @@ -402,8 +399,8 @@ MACHINE_CONFIG_START(cit101_state::cit101) ppi.in_pc_callback().append("comm", FUNC(rs232_port_device::si_r)).lshift(3); // tied to CTS for loopback test ppi.out_pc_callback().set(FUNC(cit101_state::nvr_control_w)); - MCFG_DEVICE_ADD("nvr", ER2055, 0) -MACHINE_CONFIG_END + ER2055(config, m_nvr); +} // PCB ID: HAV-2P005B / CIT-101 / C. ITOH diff --git a/src/mame/drivers/clcd.cpp b/src/mame/drivers/clcd.cpp index 9d702084db6..e65106d4198 100644 --- a/src/mame/drivers/clcd.cpp +++ b/src/mame/drivers/clcd.cpp @@ -684,11 +684,11 @@ MACHINE_CONFIG_START(clcd_state::clcd) m_acia->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); m_acia->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); - MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE("acia", mos6551_device, write_rxd)) - MCFG_RS232_DCD_HANDLER(WRITELINE("acia", mos6551_device, write_dcd)) - MCFG_RS232_DSR_HANDLER(WRITELINE("acia", mos6551_device, write_dsr)) - MCFG_RS232_CTS_HANDLER(WRITELINE("via1", via6522_device, write_pb4)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr)); + rs232.rxd_handler().set(m_acia, FUNC(mos6551_device::write_rxd)); + rs232.dcd_handler().set(m_acia, FUNC(mos6551_device::write_dcd)); + rs232.dsr_handler().set(m_acia, FUNC(mos6551_device::write_dsr)); + rs232.cts_handler().set("via1", FUNC(via6522_device::write_pb4)); CENTRONICS(config, m_centronics, centronics_devices, nullptr); m_centronics->busy_handler().set("via1", FUNC(via6522_device::write_pb6)).invert(); diff --git a/src/mame/drivers/compucolor.cpp b/src/mame/drivers/compucolor.cpp index 5e834e34369..80340822e16 100644 --- a/src/mame/drivers/compucolor.cpp +++ b/src/mame/drivers/compucolor.cpp @@ -425,14 +425,14 @@ MACHINE_CONFIG_START(compucolor2_state::compucolor2) m_mioc->xi_callback().set(FUNC(compucolor2_state::xi_r)); m_mioc->xo_callback().set(FUNC(compucolor2_state::xo_w)); - MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(TMS5501_TAG, tms5501_device, rcv_w)) + RS232_PORT(config, m_rs232, default_rs232_devices, nullptr); + m_rs232->rxd_handler().set(m_mioc, FUNC(tms5501_device::rcv_w)); - MCFG_COMPUCOLOR_FLOPPY_PORT_ADD("cd0", compucolor_floppy_port_devices, "floppy") - MCFG_RS232_RXD_HANDLER(WRITELINE(TMS5501_TAG, tms5501_device, rcv_w)) + COMPUCOLOR_FLOPPY_PORT(config, m_floppy0, compucolor_floppy_port_devices, "floppy"); + m_floppy0->rxd_handler().set(m_mioc, FUNC(tms5501_device::rcv_w)); - MCFG_COMPUCOLOR_FLOPPY_PORT_ADD("cd1", compucolor_floppy_port_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(TMS5501_TAG, tms5501_device, rcv_w)) + COMPUCOLOR_FLOPPY_PORT(config, m_floppy1, compucolor_floppy_port_devices, nullptr); + m_floppy1->rxd_handler().set(m_mioc, FUNC(tms5501_device::rcv_w)); // internal ram RAM(config, RAM_TAG).set_default_size("32K").set_extra_options("8K,16K"); diff --git a/src/mame/drivers/cybiko.cpp b/src/mame/drivers/cybiko.cpp index d05e76022f1..669087491e5 100644 --- a/src/mame/drivers/cybiko.cpp +++ b/src/mame/drivers/cybiko.cpp @@ -390,8 +390,8 @@ static DEVICE_INPUT_DEFAULTS_START( debug_serial ) // set up debug port to defau DEVICE_INPUT_DEFAULTS_END MACHINE_CONFIG_START(cybiko_state::cybikov1_debug_serial) - MCFG_DEVICE_MODIFY("debug_serial") - MCFG_RS232_RXD_HANDLER(WRITELINE("maincpu:sci2", h8_sci_device, rx_w)) + auto &debug_serial(*subdevice("debug_serial")); + debug_serial.rxd_handler().set("maincpu:sci2", FUNC(h8_sci_device::rx_w)); MCFG_DEVICE_MODIFY("maincpu:sci2") MCFG_H8_SCI_TX_CALLBACK(WRITELINE("debug_serial", rs232_port_device, write_txd)) MACHINE_CONFIG_END @@ -420,10 +420,10 @@ MACHINE_CONFIG_START(cybiko_state::cybikov1_base) RAM(config, m_ram).set_default_size("512K").set_extra_options("1M"); /* serial debug port */ - MCFG_DEVICE_ADD ("debug_serial", RS232_PORT, default_rs232_devices, nullptr) - MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("null_modem", debug_serial) - MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", debug_serial) - MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("pty", debug_serial) + rs232_port_device &debug_serial(RS232_PORT(config, "debug_serial", default_rs232_devices, nullptr)); + debug_serial.set_option_device_input_defaults("null_modem", DEVICE_INPUT_DEFAULTS_NAME(debug_serial)); + debug_serial.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(debug_serial)); + debug_serial.set_option_device_input_defaults("pty", DEVICE_INPUT_DEFAULTS_NAME(debug_serial)); /* quickload */ MCFG_QUICKLOAD_ADD("quickload", cybiko_state, cybiko, "bin,nv", 0) @@ -473,8 +473,8 @@ MACHINE_CONFIG_START(cybiko_state::cybikov2) m_ram->set_default_size("256K").set_extra_options("512K,1M"); /* serial debug port */ - MCFG_DEVICE_MODIFY("debug_serial") - MCFG_RS232_RXD_HANDLER(WRITELINE("maincpu:sci2", h8_sci_device, rx_w)) + auto &debug_serial(*subdevice("debug_serial")); + debug_serial.rxd_handler().set("maincpu:sci2", FUNC(h8_sci_device::rx_w)); MCFG_DEVICE_MODIFY("maincpu:sci2") MCFG_H8_SCI_TX_CALLBACK(WRITELINE("debug_serial", rs232_port_device, write_txd)) MACHINE_CONFIG_END @@ -494,8 +494,8 @@ MACHINE_CONFIG_START(cybiko_state::cybikoxt) m_ram->set_default_size("2M"); /* serial debug port */ - MCFG_DEVICE_MODIFY("debug_serial") - MCFG_RS232_RXD_HANDLER(WRITELINE("maincpu:sci2", h8_sci_device, rx_w)) + auto &debug_serial(*subdevice("debug_serial")); + debug_serial.rxd_handler().set("maincpu:sci2", FUNC(h8_sci_device::rx_w)); MCFG_DEVICE_MODIFY("maincpu:sci2") MCFG_H8_SCI_TX_CALLBACK(WRITELINE("debug_serial", rs232_port_device, write_txd)) diff --git a/src/mame/drivers/decstation.cpp b/src/mame/drivers/decstation.cpp index f74e430c0b7..1cedabfbda5 100644 --- a/src/mame/drivers/decstation.cpp +++ b/src/mame/drivers/decstation.cpp @@ -397,15 +397,15 @@ MACHINE_CONFIG_START(decstation_state::kn02ba) MCFG_DEVICE_ADD("lk201", LK201, 0) MCFG_LK201_TX_HANDLER(WRITELINE("scc1", z80scc_device, rxb_w)) - MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE("scc0", z80scc_device, rxa_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE("scc0", z80scc_device, dcda_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("scc0", z80scc_device, ctsa_w)) + rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr)); + rs232a.rxd_handler().set(m_scc0, FUNC(z80scc_device::rxa_w)); + rs232a.dcd_handler().set(m_scc0, FUNC(z80scc_device::dcda_w)); + rs232a.cts_handler().set(m_scc0, FUNC(z80scc_device::ctsa_w)); - MCFG_DEVICE_ADD("rs232b", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE("scc0", z80scc_device, rxb_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE("scc0", z80scc_device, dcdb_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("scc0", z80scc_device, ctsb_w)) + rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, nullptr)); + rs232b.rxd_handler().set(m_scc0, FUNC(z80scc_device::rxb_w)); + rs232b.dcd_handler().set(m_scc0, FUNC(z80scc_device::dcdb_w)); + rs232b.cts_handler().set(m_scc0, FUNC(z80scc_device::ctsb_w)); MCFG_NSCSI_BUS_ADD("scsibus") MCFG_NSCSI_ADD("scsibus:0", dec_scsi_devices, "harddisk", false) diff --git a/src/mame/drivers/dectalk.cpp b/src/mame/drivers/dectalk.cpp index ab044202346..61728babbcb 100644 --- a/src/mame/drivers/dectalk.cpp +++ b/src/mame/drivers/dectalk.cpp @@ -880,7 +880,7 @@ MACHINE_CONFIG_START(dectalk_state::dectalk) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(20'000'000)/2) /* E74 20MHz OSC (/2) */ MCFG_DEVICE_PROGRAM_MAP(m68k_mem) - MCFG_DEVICE_ADD("duart", SCN2681, XTAL(3'686'400)) // MC2681 DUART ; Y3 3.6864MHz xtal */ + MCFG_DEVICE_ADD(m_duart, SCN2681, XTAL(3'686'400)) // MC2681 DUART ; Y3 3.6864MHz xtal */ MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, dectalk_state, duart_irq_handler)) MCFG_MC68681_A_TX_CALLBACK(WRITELINE(*this, dectalk_state, duart_txa)) MCFG_MC68681_B_TX_CALLBACK(WRITELINE("rs232", rs232_port_device, write_txd)) @@ -909,8 +909,8 @@ MACHINE_CONFIG_START(dectalk_state::dectalk) /* Y2 is a 3.579545 MHz xtal for the dtmf decoder chip */ - MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE("duart", scn2681_device, rx_b_w)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); + rs232.rxd_handler().set(m_duart, FUNC(scn2681_device::rx_b_w)); MACHINE_CONFIG_END diff --git a/src/mame/drivers/decwritr.cpp b/src/mame/drivers/decwritr.cpp index e1e2b450db7..ead4c944006 100644 --- a/src/mame/drivers/decwritr.cpp +++ b/src/mame/drivers/decwritr.cpp @@ -456,9 +456,9 @@ MACHINE_CONFIG_START(decwriter_state::la120) MCFG_INPUT_MERGER_ANY_HIGH("mainint") MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", 0)) - MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE("usart", i8251_device, write_rxd)) - MCFG_RS232_DSR_HANDLER(WRITELINE("usart", i8251_device, write_dsr)) + rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); + rs232.rxd_handler().set("usart", FUNC(i8251_device::write_rxd)); + rs232.dsr_handler().set("usart", FUNC(i8251_device::write_dsr)); */ ER1400(config, m_nvm); diff --git a/src/mame/drivers/dvk_ksm.cpp b/src/mame/drivers/dvk_ksm.cpp index 7f2ce0b4754..ca204512c90 100644 --- a/src/mame/drivers/dvk_ksm.cpp +++ b/src/mame/drivers/dvk_ksm.cpp @@ -447,13 +447,13 @@ MACHINE_CONFIG_START(ksm_state::ksm) // D42 - serial connection to host I8251(config, m_i8251line, 0); - m_i8251line->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_i8251line->txd_handler().set(m_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)) - MCFG_RS232_CTS_HANDLER(WRITELINE("i8251line", i8251_device, write_cts)) - MCFG_RS232_DSR_HANDLER(WRITELINE("i8251line", i8251_device, write_dsr)) + RS232_PORT(config, m_rs232, default_rs232_devices, "null_modem"); + m_rs232->rxd_handler().set(m_i8251line, FUNC(i8251_device::write_rxd)); + m_rs232->cts_handler().set(m_i8251line, FUNC(i8251_device::write_cts)); + m_rs232->dsr_handler().set(m_i8251line, FUNC(i8251_device::write_dsr)); // D41 - serial connection to MS7004 keyboard I8251(config, m_i8251kbd, 0); diff --git a/src/mame/drivers/ep64.cpp b/src/mame/drivers/ep64.cpp index 50c0475ae9a..5f6dc493815 100644 --- a/src/mame/drivers/ep64.cpp +++ b/src/mame/drivers/ep64.cpp @@ -578,10 +578,10 @@ MACHINE_CONFIG_START(ep64_state::ep64) // video hardware MCFG_NICK_ADD(NICK_TAG, SCREEN_TAG, XTAL(8'000'000)) - MCFG_NICK_VIRQ_CALLBACK(WRITELINE(DAVE_TAG, dave_device, int1_w)) + MCFG_NICK_VIRQ_CALLBACK(WRITELINE(m_dave, dave_device, int1_w)) // sound hardware - MCFG_DAVE_ADD(DAVE_TAG, XTAL(8'000'000), dave_64k_mem, dave_io) + MCFG_DAVE_ADD(m_dave, XTAL(8'000'000), dave_64k_mem, dave_io) MCFG_DAVE_IRQ_CALLBACK(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) // devices @@ -595,8 +595,8 @@ MACHINE_CONFIG_START(ep64_state::ep64) MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, ep64_state, write_centronics_busy)) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) - MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_CTS_HANDLER(WRITELINE(DAVE_TAG, dave_device, int2_w)) + RS232_PORT(config, m_rs232, default_rs232_devices, nullptr); + m_rs232->rxd_handler().set(m_dave, FUNC(dave_device::int2_w)); MCFG_CASSETTE_ADD(CASSETTE1_TAG) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED) diff --git a/src/mame/drivers/fccpu30.cpp b/src/mame/drivers/fccpu30.cpp index 506dc0e00e9..712016c0f88 100644 --- a/src/mame/drivers/fccpu30.cpp +++ b/src/mame/drivers/fccpu30.cpp @@ -713,21 +713,21 @@ MACHINE_CONFIG_START(cpu30_state::cpu30) /* DUSCC2 interrupt signal REQN is connected to LOCAL IRQ5 of the FGA-002 and level is programmable */ MCFG_DUSCC_OUT_INT_CB(WRITELINE("fga002", fga002_device, lirq5_w)) - MCFG_DEVICE_ADD(RS232P1_TAG, RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE("duscc", duscc68562_device, rxb_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("duscc", duscc68562_device, ctsb_w)) + rs232_port_device &rs232p1(RS232_PORT(config, RS232P1_TAG, default_rs232_devices, "terminal")); + rs232p1.rxd_handler().set(m_dusccterm, FUNC(duscc68562_device::rxb_w)); + rs232p1.cts_handler().set(m_dusccterm, FUNC(duscc68562_device::ctsb_w)); - MCFG_DEVICE_ADD(RS232P2_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE("duscc2", duscc68562_device, rxa_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("duscc2", duscc68562_device, ctsa_w)) + rs232_port_device &rs232p2(RS232_PORT(config, RS232P2_TAG, default_rs232_devices, nullptr)); + rs232p2.rxd_handler().set("duscc2", FUNC(duscc68562_device::rxa_w)); + rs232p2.cts_handler().set("duscc2", FUNC(duscc68562_device::ctsa_w)); - MCFG_DEVICE_ADD(RS232P3_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE("duscc2", duscc68562_device, rxb_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("duscc2", duscc68562_device, ctsb_w)) + rs232_port_device &rs232p3(RS232_PORT(config, RS232P3_TAG, default_rs232_devices, nullptr)); + rs232p3.rxd_handler().set("duscc2", FUNC(duscc68562_device::rxb_w)); + rs232p3.cts_handler().set("duscc2", FUNC(duscc68562_device::ctsb_w)); - MCFG_DEVICE_ADD(RS232P4_TAG, RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE("duscc", duscc68562_device, rxa_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("duscc", duscc68562_device, ctsa_w)) + rs232_port_device &rs232p4(RS232_PORT(config, RS232P4_TAG, default_rs232_devices, "terminal")); + rs232p4.rxd_handler().set(m_dusccterm, FUNC(duscc68562_device::rxa_w)); + rs232p4.cts_handler().set(m_dusccterm, FUNC(duscc68562_device::ctsa_w)); /* PIT Parallel Interface and Timer device, assumed strapped for on board clock */ PIT68230(config, m_pit1, XTAL(16'000'000) / 2); // The PIT clock is not verified on schema but reversed from behaviour diff --git a/src/mame/drivers/fmtowns.cpp b/src/mame/drivers/fmtowns.cpp index 656db340a54..4d4c470d875 100644 --- a/src/mame/drivers/fmtowns.cpp +++ b/src/mame/drivers/fmtowns.cpp @@ -2866,10 +2866,10 @@ MACHINE_CONFIG_START(towns_state::towns_base) 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)) - MCFG_RS232_CTS_HANDLER(WRITELINE("i8251",i8251_device, write_cts)) + rs232_port_device &rs232c(RS232_PORT(config, "rs232c", default_rs232_devices, nullptr)); + rs232c.rxd_handler().set(m_i8251, FUNC(i8251_device::write_rxd)); + rs232c.dsr_handler().set(m_i8251, FUNC(i8251_device::write_dsr)); + rs232c.cts_handler().set(m_i8251, FUNC(i8251_device::write_cts)); MCFG_FMT_ICMEMCARD_ADD("icmemcard") diff --git a/src/mame/drivers/force68k.cpp b/src/mame/drivers/force68k.cpp index 4c2f72b8933..cb7a66ad7d7 100644 --- a/src/mame/drivers/force68k.cpp +++ b/src/mame/drivers/force68k.cpp @@ -558,18 +558,18 @@ MACHINE_CONFIG_START(force68k_state::fccpu1) m_aciahost->txd_handler().set("rs232host", FUNC(rs232_port_device::write_txd)); m_aciahost->rts_handler().set("rs232host", FUNC(rs232_port_device::write_rts)); - MCFG_DEVICE_ADD("rs232host", RS232_PORT, default_rs232_devices, "null_modem") - MCFG_RS232_RXD_HANDLER(WRITELINE("aciahost", acia6850_device, write_rxd)) - MCFG_RS232_CTS_HANDLER(WRITELINE("aciahost", acia6850_device, write_cts)) + rs232_port_device &rs232host(RS232_PORT(config, "rs232host", default_rs232_devices, "null_modem")); + rs232host.rxd_handler().set(m_aciahost, FUNC(acia6850_device::write_rxd)); + rs232host.cts_handler().set(m_aciahost, FUNC(acia6850_device::write_cts)); /* P4/Terminal Port config */ ACIA6850(config, m_aciaterm, 0); m_aciaterm->txd_handler().set("rs232trm", FUNC(rs232_port_device::write_txd)); m_aciaterm->rts_handler().set("rs232trm", FUNC(rs232_port_device::write_rts)); - MCFG_DEVICE_ADD("rs232trm", RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE("aciaterm", acia6850_device, write_rxd)) - MCFG_RS232_CTS_HANDLER(WRITELINE("aciaterm", acia6850_device, write_cts)) + rs232_port_device &rs232trm(RS232_PORT(config, "rs232trm", default_rs232_devices, "terminal")); + rs232trm.rxd_handler().set(m_aciaterm, FUNC(acia6850_device::write_rxd)); + rs232trm.cts_handler().set(m_aciaterm, FUNC(acia6850_device::write_cts)); /* P5/Remote Port config */ ACIA6850(config, m_aciaremt, 0); diff --git a/src/mame/drivers/gkigt.cpp b/src/mame/drivers/gkigt.cpp index 690d5bd7226..93f59f3fa01 100644 --- a/src/mame/drivers/gkigt.cpp +++ b/src/mame/drivers/gkigt.cpp @@ -619,9 +619,9 @@ MACHINE_CONFIG_START(igt_gameking_state::igt_gameking) MCFG_DEVICE_ADD("quart2", SC28C94, XTAL(24'000'000) / 6) MCFG_MC68681_IRQ_CALLBACK(INPUTLINE("maincpu", I960_IRQ0)) - MCFG_DEVICE_ADD("diag", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE("quart1", sc28c94_device, rx_d_w)) - MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal) + rs232_port_device &diag(RS232_PORT(config, "diag", default_rs232_devices, nullptr)); + diag.rxd_handler().set("quart1", FUNC(sc28c94_device::rx_d_w)); + diag.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_igt_gameking) diff --git a/src/mame/drivers/gridcomp.cpp b/src/mame/drivers/gridcomp.cpp index 02a19f116fa..8d1d2e12889 100644 --- a/src/mame/drivers/gridcomp.cpp +++ b/src/mame/drivers/gridcomp.cpp @@ -399,17 +399,18 @@ MACHINE_CONFIG_START(gridcomp_state::grid1101) 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)) - MCFG_TMS9914_DIO_READWRITE_CB(READ8(IEEE488_TAG, ieee488_device, dio_r), WRITE8(IEEE488_TAG, ieee488_device, host_dio_w)) - MCFG_TMS9914_EOI_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_eoi_w)) - MCFG_TMS9914_DAV_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_dav_w)) - MCFG_TMS9914_NRFD_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_nrfd_w)) - MCFG_TMS9914_NDAC_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_ndac_w)) - MCFG_TMS9914_IFC_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_ifc_w)) - MCFG_TMS9914_SRQ_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_srq_w)) - MCFG_TMS9914_ATN_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_atn_w)) - MCFG_TMS9914_REN_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_ren_w)) + tms9914_device &hpib(TMS9914(config, "hpib", XTAL(4'000'000))); + hpib.int_write_cb().set(I80130_TAG, FUNC(i80130_device::ir5_w)); + hpib.dio_read_cb().set(IEEE488_TAG, FUNC(ieee488_device::dio_r)); + hpib.dio_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_dio_w)); + hpib.eoi_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_eoi_w)); + hpib.dav_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_dav_w)); + hpib.nrfd_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_nrfd_w)); + hpib.ndac_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ndac_w)); + hpib.ifc_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ifc_w)); + hpib.srq_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_srq_w)); + hpib.atn_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w)); + hpib.ren_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w)); MCFG_IEEE488_BUS_ADD() MCFG_IEEE488_EOI_CALLBACK(WRITELINE("hpib", tms9914_device, eoi_w)) MCFG_IEEE488_DAV_CALLBACK(WRITELINE("hpib", tms9914_device, dav_w)) diff --git a/src/mame/drivers/guab.cpp b/src/mame/drivers/guab.cpp index 03a1690f7f9..cd8280ac891 100644 --- a/src/mame/drivers/guab.cpp +++ b/src/mame/drivers/guab.cpp @@ -534,10 +534,10 @@ MACHINE_CONFIG_START(guab_state::guab) acia1.rts_handler().set("rs232_1", FUNC(rs232_port_device::write_rts)); acia1.irq_handler().set_inputline("maincpu", 4); - MCFG_DEVICE_ADD("rs232_1", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE("acia6850_1", acia6850_device, write_rxd)) - MCFG_RS232_CTS_HANDLER(WRITELINE("acia6850_1", acia6850_device, write_cts)) - MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("keyboard", acia_1_rs232_defaults) + rs232_port_device &rs232(RS232_PORT(config, "rs232_1", default_rs232_devices, nullptr)); + rs232.rxd_handler().set("acia6850_1", FUNC(acia6850_device::write_rxd)); + rs232.cts_handler().set("acia6850_1", FUNC(acia6850_device::write_cts)); + rs232.set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(acia_1_rs232_defaults)); clock_device &acia_clock(CLOCK(config, "acia_clock", 153600)); // source? the ptm doesn't seem to output any common baud values acia_clock.signal_handler().set("acia6850_1", FUNC(acia6850_device::write_txc)); diff --git a/src/mame/drivers/h89.cpp b/src/mame/drivers/h89.cpp index 6dd41e6938c..becea35114b 100644 --- a/src/mame/drivers/h89.cpp +++ b/src/mame/drivers/h89.cpp @@ -185,21 +185,22 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS_END -MACHINE_CONFIG_START(h89_state::h89) +void h89_state::h89(machine_config & config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu",Z80, XTAL(12'288'000) / 6) - MCFG_DEVICE_PROGRAM_MAP(h89_mem) - MCFG_DEVICE_IO_MAP(h89_io) + Z80(config, m_maincpu, XTAL(12'288'000) / 6); + m_maincpu->set_addrmap(AS_PROGRAM, &h89_state::h89_mem); + m_maincpu->set_addrmap(AS_IO, &h89_state::h89_io); ins8250_device &uart(INS8250(config, "ins8250", XTAL(1'843'200))); uart.out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); - MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE("ins8250", ins8250_uart_device, rx_w)) - MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal) + rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, "terminal")); + rs232.rxd_handler().set("ins8250", FUNC(ins8250_uart_device::rx_w)); + rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", h89_state, h89_irq_timer, attotime::from_hz(100)) -MACHINE_CONFIG_END + TIMER(config, "irq_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(h89_state::h89_irq_timer), this), attotime::from_hz(100)); +} /* ROM definition */ ROM_START( h89 ) diff --git a/src/mame/drivers/hk68v10.cpp b/src/mame/drivers/hk68v10.cpp index fbacf6cebf6..935d25039c6 100644 --- a/src/mame/drivers/hk68v10.cpp +++ b/src/mame/drivers/hk68v10.cpp @@ -350,9 +350,9 @@ MACHINE_CONFIG_START(hk68v10_state::hk68v10) m_sccterm->out_dtra_callback().set("rs232trm", FUNC(rs232_port_device::write_dtr)); m_sccterm->out_rtsa_callback().set("rs232trm", FUNC(rs232_port_device::write_rts)); - MCFG_DEVICE_ADD("rs232trm", RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE(m_sccterm, scc8530_device, rxa_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE(m_sccterm, scc8530_device, ctsa_w)) + rs232_port_device &rs232trm(RS232_PORT(config, "rs232trm", default_rs232_devices, "terminal")); + rs232trm.rxd_handler().set(m_sccterm, FUNC(scc8530_device::rxa_w)); + rs232trm.cts_handler().set(m_sccterm, FUNC(scc8530_device::ctsa_w)); MCFG_VME_DEVICE_ADD("vme") MCFG_VME_SLOT_ADD("vme", 1, hk68_vme_cards, nullptr) diff --git a/src/mame/drivers/hp_ipc.cpp b/src/mame/drivers/hp_ipc.cpp index a4cb3238067..1f67ed30a59 100644 --- a/src/mame/drivers/hp_ipc.cpp +++ b/src/mame/drivers/hp_ipc.cpp @@ -767,17 +767,18 @@ MACHINE_CONFIG_START(hp_ipc_state::hp_ipc_base) mouse.set_default_option("hp_46060b"); mouse.set_hp_hil_slot(this, "mlc"); - MCFG_DEVICE_ADD("hpib", TMS9914, 4_MHz_XTAL) - MCFG_TMS9914_INT_WRITE_CB(WRITELINE(*this, hp_ipc_state, irq_3)) - MCFG_TMS9914_DIO_READWRITE_CB(READ8(IEEE488_TAG , ieee488_device , dio_r) , WRITE8(IEEE488_TAG , ieee488_device , host_dio_w)) - MCFG_TMS9914_EOI_WRITE_CB(WRITELINE(IEEE488_TAG , ieee488_device , host_eoi_w)) - MCFG_TMS9914_DAV_WRITE_CB(WRITELINE(IEEE488_TAG , ieee488_device , host_dav_w)) - MCFG_TMS9914_NRFD_WRITE_CB(WRITELINE(IEEE488_TAG , ieee488_device , host_nrfd_w)) - MCFG_TMS9914_NDAC_WRITE_CB(WRITELINE(IEEE488_TAG , ieee488_device , host_ndac_w)) - MCFG_TMS9914_IFC_WRITE_CB(WRITELINE(IEEE488_TAG , ieee488_device , host_ifc_w)) - MCFG_TMS9914_SRQ_WRITE_CB(WRITELINE(IEEE488_TAG , ieee488_device , host_srq_w)) - MCFG_TMS9914_ATN_WRITE_CB(WRITELINE(IEEE488_TAG , ieee488_device , host_atn_w)) - MCFG_TMS9914_REN_WRITE_CB(WRITELINE(IEEE488_TAG , ieee488_device , host_ren_w)) + tms9914_device &hpib(TMS9914(config, "hpib", 4_MHz_XTAL)); + hpib.int_write_cb().set(FUNC(hp_ipc_state::irq_3)); + hpib.dio_read_cb().set(IEEE488_TAG, FUNC(ieee488_device::dio_r)); + hpib.dio_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_dio_w)); + hpib.eoi_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_eoi_w)); + hpib.dav_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_dav_w)); + hpib.nrfd_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_nrfd_w)); + hpib.ndac_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ndac_w)); + hpib.ifc_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ifc_w)); + hpib.srq_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_srq_w)); + hpib.atn_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w)); + hpib.ren_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w)); MCFG_IEEE488_BUS_ADD() MCFG_IEEE488_EOI_CALLBACK(WRITELINE("hpib" , tms9914_device , eoi_w)) MCFG_IEEE488_DAV_CALLBACK(WRITELINE("hpib" , tms9914_device , dav_w)) diff --git a/src/mame/drivers/ibm6580.cpp b/src/mame/drivers/ibm6580.cpp index 092c062daca..98310683fbc 100644 --- a/src/mame/drivers/ibm6580.cpp +++ b/src/mame/drivers/ibm6580.cpp @@ -938,10 +938,10 @@ MACHINE_CONFIG_START(ibm6580_state::ibm6580) 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)) + rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr)); + rs232a.rxd_handler().set("upd8251a", FUNC(i8251_device::write_rxd)); + rs232a.dsr_handler().set("upd8251a", FUNC(i8251_device::write_dsr)); + rs232a.cts_handler().set("upd8251a", FUNC(i8251_device::write_cts)); i8251_device &upd8251b(I8251(config, "upd8251b", 0)); upd8251b.txd_handler().set("rs232b", FUNC(rs232_port_device::write_txd)); @@ -950,10 +950,10 @@ MACHINE_CONFIG_START(ibm6580_state::ibm6580) 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)) - MCFG_RS232_DSR_HANDLER(WRITELINE("upd8251b", i8251_device, write_dsr)) - MCFG_RS232_CTS_HANDLER(WRITELINE("upd8251b", i8251_device, write_cts)) + rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, nullptr)); + rs232b.rxd_handler().set("upd8251b", FUNC(i8251_device::write_rxd)); + rs232b.dsr_handler().set("upd8251b", FUNC(i8251_device::write_dsr)); + rs232b.cts_handler().set("upd8251b", FUNC(i8251_device::write_cts)); MCFG_SOFTWARE_LIST_ADD("flop_list", "ibm6580") MACHINE_CONFIG_END diff --git a/src/mame/drivers/isbc.cpp b/src/mame/drivers/isbc.cpp index 9e738703524..aeef4555fb9 100644 --- a/src/mame/drivers/isbc.cpp +++ b/src/mame/drivers/isbc.cpp @@ -347,11 +347,11 @@ MACHINE_CONFIG_START(isbc_state::isbc86) 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(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) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); + rs232.rxd_handler().set(m_uart8251, FUNC(i8251_device::write_rxd)); + rs232.cts_handler().set(m_uart8251, FUNC(i8251_device::write_cts)); + rs232.dsr_handler().set(m_uart8251, FUNC(i8251_device::write_dsr)); + rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc86_terminal)); MACHINE_CONFIG_END MACHINE_CONFIG_START(isbc_state::rpc86) @@ -381,11 +381,11 @@ MACHINE_CONFIG_START(isbc_state::rpc86) m_uart8251->txrdy_handler().set("pic_0", FUNC(pic8259_device::ir7_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_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", isbc286_terminal) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); + rs232.rxd_handler().set(m_uart8251, FUNC(i8251_device::write_rxd)); + //rs232.cts_handler().set(m_uart8251, FUNC(i8251_device::write_cts)); + rs232.dsr_handler().set(m_uart8251, FUNC(i8251_device::write_dsr)); + rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc286_terminal)); MCFG_ISBX_SLOT_ADD("sbx1", 0, isbx_cards, nullptr) //MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_0", pic8259_device, ir3_w)) @@ -484,28 +484,28 @@ MACHINE_CONFIG_START(isbc_state::isbc286) m_uart8274->out_int_callback().set("pic_0", FUNC(pic8259_device::ir6_w)); #endif - MCFG_DEVICE_ADD("rs232a", RS232_PORT, default_rs232_devices, nullptr) + rs232_port_device &rs232a(RS232_PORT(config, "rs232a", default_rs232_devices, nullptr)); #if 0 - MCFG_RS232_RXD_HANDLER(WRITELINE("uart8274", z80dart_device, rxa_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE("uart8274", z80dart_device, dcda_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("uart8274", z80dart_device, ctsa_w)) + rs232a.rxd_handler().set(m_uart8274, FUNC(z80dart_device::rxa_w)); + rs232a.dcd_handler().set(m_uart8274, FUNC(z80dart_device::dcda_w)); + rs232a.cts_handler().set(m_uart8274, FUNC(z80dart_device::ctsa_w)); #else - MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, rxa_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, dcda_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart8274, i8274_new_device, ctsa_w)) + rs232a.rxd_handler().set(m_uart8274, FUNC(i8274_new_device::rxa_w)); + rs232a.dcd_handler().set(m_uart8274, FUNC(i8274_new_device::dcda_w)); + rs232a.cts_handler().set(m_uart8274, FUNC(i8274_new_device::ctsa_w)); #endif - MCFG_DEVICE_ADD("rs232b", RS232_PORT, default_rs232_devices, "terminal") + rs232_port_device &rs232b(RS232_PORT(config, "rs232b", default_rs232_devices, "terminal")); #if 0 - MCFG_RS232_RXD_HANDLER(WRITELINE("uart8274", z80dart_device, rxb_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE("uart8274", z80dart_device, dcdb_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("uart8274", z80dart_device, ctsb_w)) + rs232b.rxd_handler().set(m_uart8274, FUNC(z80dart_device::rxb_w)); + rs232b.dcd_handler().set(m_uart8274, FUNC(z80dart_device::dcdb_w)); + rs232b.cts_handler().set(m_uart8274, FUNC(z80dart_device::ctsb_w)); #else - MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, rxb_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart8274, i8274_new_device, dcdb_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart8274, i8274_new_device, ctsb_w)) + rs232b.rxd_handler().set(m_uart8274, FUNC(i8274_new_device::rxb_w)); + rs232b.dcd_handler().set(m_uart8274, FUNC(i8274_new_device::dcdb_w)); + rs232b.cts_handler().set(m_uart8274, FUNC(i8274_new_device::ctsb_w)); #endif - MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", isbc286_terminal) + rs232b.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(isbc286_terminal)); MCFG_ISBX_SLOT_ADD("sbx1", 0, isbx_cards, nullptr) MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_1", pic8259_device, ir3_w)) diff --git a/src/mame/drivers/isbc8010.cpp b/src/mame/drivers/isbc8010.cpp index 21e76fd841b..a6c4b4017fa 100644 --- a/src/mame/drivers/isbc8010.cpp +++ b/src/mame/drivers/isbc8010.cpp @@ -182,14 +182,14 @@ MACHINE_CONFIG_START(isbc8010_state::isbc8010) 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) + I8255A(config, m_ppi_0); + I8255A(config, m_ppi_1); - MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE(I8251A_TAG, i8251_device, write_rxd)) - MCFG_RS232_DSR_HANDLER(WRITELINE(I8251A_TAG, i8251_device, write_dsr)) - MCFG_RS232_CTS_HANDLER(WRITELINE(I8251A_TAG, i8251_device, write_cts)) - MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal) + RS232_PORT(config, m_rs232, default_rs232_devices, "terminal"); + m_rs232->rxd_handler().set(m_usart, FUNC(i8251_device::write_rxd)); + m_rs232->dsr_handler().set(m_usart, FUNC(i8251_device::write_dsr)); + m_rs232->cts_handler().set(m_usart, FUNC(i8251_device::write_cts)); + m_rs232->set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); MCFG_DEVICE_ADD("usart_clock", CLOCK, XTAL(18'432'000)/60) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, isbc8010_state, usart_clock_tick)) diff --git a/src/mame/drivers/kyocera.cpp b/src/mame/drivers/kyocera.cpp index c8ad6c26c48..1a490e5da5c 100644 --- a/src/mame/drivers/kyocera.cpp +++ b/src/mame/drivers/kyocera.cpp @@ -1374,8 +1374,8 @@ MACHINE_CONFIG_START(kc85_state::kc85) IM6402(config, m_uart, 0, 0); m_uart->tro_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); - MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, im6402_device, write_rri)) + rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); + rs232.rxd_handler().set(m_uart, FUNC(im6402_device::write_rri)); MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, kc85_state, write_centronics_busy)) @@ -1424,8 +1424,8 @@ MACHINE_CONFIG_START(pc8201_state::pc8201) IM6402(config, m_uart, 0, 0); m_uart->tro_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); - MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, im6402_device, write_rri)) + rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); + rs232.rxd_handler().set(m_uart, FUNC(im6402_device::write_rri)); MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, kc85_state, write_centronics_busy)) @@ -1484,8 +1484,8 @@ MACHINE_CONFIG_START(trsm100_state::trsm100) IM6402(config, m_uart, 0, 0); m_uart->tro_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); - MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, im6402_device, write_rri)) + rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); + rs232.rxd_handler().set(m_uart, FUNC(im6402_device::write_rri)); MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") MCFG_CASSETTE_ADD("cassette") @@ -1544,9 +1544,9 @@ MACHINE_CONFIG_START(tandy200_state::tandy200) 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)) - MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_dsr)) + rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); + rs232.rxd_handler().set(I8251_TAG, FUNC(i8251_device::write_rxd)); + rs232.dsr_handler().set(I8251_TAG, FUNC(i8251_device::write_dsr)); // MCFG_MC14412_ADD(MC14412_TAG, XTAL(1'000'000)) MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") diff --git a/src/mame/drivers/mcb216.cpp b/src/mame/drivers/mcb216.cpp index bed9565e0a0..a6ca9952aec 100644 --- a/src/mame/drivers/mcb216.cpp +++ b/src/mame/drivers/mcb216.cpp @@ -132,8 +132,8 @@ MACHINE_CONFIG_START(mcb216_state::mcb216) m_tms5501->xmt_callback().set("rs232", FUNC(rs232_port_device::write_txd)); m_tms5501->int_callback().set_inputline("maincpu", 0); - MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE("tms5501", tms5501_device, rcv_w)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); + rs232.rxd_handler().set(m_tms5501, FUNC(tms5501_device::rcv_w)); MACHINE_CONFIG_END MACHINE_CONFIG_START(mcb216_state::cb308) @@ -149,8 +149,8 @@ MACHINE_CONFIG_START(mcb216_state::cb308) m_tms5501->xmt_callback().set("rs232", FUNC(rs232_port_device::write_txd)); m_tms5501->int_callback().set_inputline("maincpu", 0); - MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE("tms5501", tms5501_device, rcv_w)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); + rs232.rxd_handler().set(m_tms5501, FUNC(tms5501_device::rcv_w)); MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mame/drivers/mitchell.cpp b/src/mame/drivers/mitchell.cpp index 89035778207..8a3d33d7bdd 100644 --- a/src/mame/drivers/mitchell.cpp +++ b/src/mame/drivers/mitchell.cpp @@ -2073,11 +2073,12 @@ ROM_START( spangbl ) ROM_LOAD( "ic125.14", 0x030000, 0x10000, CRC(bd5c2f4b) SHA1(3c71d63637633a98ab513e4336e2954af3f964f4) ) ROM_END +// There is a bank of 8 dipswitches that needs to be hooked up ROM_START( spangbl2 ) ROM_REGION( 0x50000*2, "maincpu", ROMREGION_ERASEFF ) - ROM_LOAD( "ic2.1", 0x00000, 0x08000, CRC(4403f652) SHA1(62a232985a334ea8af840c2c3e766f316cc9e3da) ) // 1ST AND 2ND HALF IDENTICAL, but found as is on two different boards - ROM_CONTINUE(0x50000,0x8000) - ROM_LOAD( "ic18.2", 0x60000, 0x04000, CRC(6f377832) SHA1(25755ed77a797f50fdfbb4c42a04f51d3d08f87c) ) + // IC2 can be found as 27C512 with 1st and 2nd half identical or as 27C256 + ROM_LOAD( "sp2-19.ic2", 0x00000, 0x08000, CRC(6f52f8df) SHA1(a203e5cee601ea660860c38ac8e377a54f619c12) ) // 27C256 + ROM_LOAD( "sp-18.ic18", 0x60000, 0x04000, CRC(6f377832) SHA1(25755ed77a797f50fdfbb4c42a04f51d3d08f87c) ) // 27C020 ROM_CONTINUE(0x10000,0x4000) ROM_CONTINUE(0x64000,0x4000) ROM_CONTINUE(0x14000,0x4000) @@ -2093,38 +2094,44 @@ ROM_START( spangbl2 ) ROM_CONTINUE(0x28000,0x4000) ROM_CONTINUE(0x7c000,0x4000) ROM_CONTINUE(0x2c000,0x4000) - ROM_LOAD( "ic19.3", 0x40000, 0x04000, CRC(7c776309) SHA1(8861ed11484ca0727dfbc3003888a9de32ed8ecc) ) + ROM_LOAD( "sp-17.ic19", 0x40000, 0x04000, CRC(7c776309) SHA1(8861ed11484ca0727dfbc3003888a9de32ed8ecc) ) // 27C256 ROM_CONTINUE(0x48000,0x4000) ROM_CONTINUE(0x44000,0x4000) ROM_CONTINUE(0x4c000,0x4000) - ROM_REGION( 0x20000, "audiocpu", 0 ) /* Sound Z80 + M5205 samples */ - ROM_LOAD( "ic28.4", 0x00000, 0x10000, CRC(02b07d0a) SHA1(77cb9bf1b0d93ebad1bd8cdbedb7fdbad23697be) ) - ROM_LOAD( "ic45.5", 0x10000, 0x10000, CRC(95c32824) SHA1(02de90a7bfbe89feb7708fda8dfac4ed32bc0773) ) + ROM_REGION( 0x20000, "audiocpu", 0 ) // Sound Z80 + M5205 samples + ROM_LOAD( "sp-20.ic28", 0x00000, 0x10000, CRC(02b07d0a) SHA1(77cb9bf1b0d93ebad1bd8cdbedb7fdbad23697be) ) // 27C512 + ROM_LOAD( "sp-21.ic45", 0x10000, 0x10000, CRC(95c32824) SHA1(02de90a7bfbe89feb7708fda8dfac4ed32bc0773) ) // 27C512 ROM_REGION( 0x100000, "gfx1", ROMREGION_INVERT| ROMREGION_ERASE00 ) - ROM_LOAD16_BYTE( "ic79.11", 0x000001, 0x10000, CRC(10839ddd) SHA1(bfb56aa5d6ee1d3aa19e346264bee90d64545e51) ) - ROM_LOAD16_BYTE( "ic78.7", 0x000000, 0x10000, CRC(c1d5df89) SHA1(a86e641af1b41c8f642fe3a14ebcbe6c27f80c79) ) - ROM_LOAD16_BYTE( "ic49.10", 0x020001, 0x10000, CRC(113c2753) SHA1(37b480b5d9c581d3c807c81924b4bbbc21d0698d) ) - ROM_LOAD16_BYTE( "ic48.6", 0x020000, 0x10000, CRC(4ffae6c9) SHA1(71df3c374a24d6a90e78d33929cb91d05bd10b78) ) - ROM_LOAD16_BYTE( "ic81.13", 0x080001, 0x10000, CRC(ebe9c63a) SHA1(1aeeea5051086405ceb803ca7a5bfd82a07ade0f) ) - ROM_LOAD16_BYTE( "ic80.9", 0x080000, 0x10000, CRC(f680051d) SHA1(b6e09e14baf839961f46e0986d2c17f7edfaf13d) ) - ROM_LOAD16_BYTE( "ic51.12", 0x0a0001, 0x10000, CRC(beb49dc9) SHA1(c93f65b0f4ce0a0f400202f2998b89abad1f6942) ) - ROM_LOAD16_BYTE( "ic50.8", 0x0a0000, 0x10000, CRC(3f91014c) SHA1(b3947caa0c667d871c19d7dda6536d043ad296f2) ) + ROM_LOAD16_BYTE( "sp-31.ic79", 0x000001, 0x10000, CRC(10839ddd) SHA1(bfb56aa5d6ee1d3aa19e346264bee90d64545e51) ) // 27C512 + ROM_LOAD16_BYTE( "sp-23.ic78", 0x000000, 0x10000, CRC(c1d5df89) SHA1(a86e641af1b41c8f642fe3a14ebcbe6c27f80c79) ) // 27C512 + ROM_LOAD16_BYTE( "sp-30.ic49", 0x020001, 0x10000, CRC(113c2753) SHA1(37b480b5d9c581d3c807c81924b4bbbc21d0698d) ) // 27C512 + ROM_LOAD16_BYTE( "sp-22.ic46", 0x020000, 0x10000, CRC(4ffae6c9) SHA1(71df3c374a24d6a90e78d33929cb91d05bd10b78) ) // 27C512 + ROM_LOAD16_BYTE( "sp-33.ic81", 0x080001, 0x10000, CRC(ebe9c63a) SHA1(1aeeea5051086405ceb803ca7a5bfd82a07ade0f) ) // 27C512 + ROM_LOAD16_BYTE( "sp-25.ic80", 0x080000, 0x10000, CRC(f680051d) SHA1(b6e09e14baf839961f46e0986d2c17f7edfaf13d) ) // 27C512 + ROM_LOAD16_BYTE( "sp-32.ic51", 0x0a0001, 0x10000, CRC(beb49dc9) SHA1(c93f65b0f4ce0a0f400202f2998b89abad1f6942) ) // 27C512 + ROM_LOAD16_BYTE( "sp-24.ic50", 0x0a0000, 0x10000, CRC(3f91014c) SHA1(b3947caa0c667d871c19d7dda6536d043ad296f2) ) // 27C512 ROM_REGION( 0x040000, "gfx2", ROMREGION_INVERT ) - ROM_LOAD( "ic94.17", 0x000000, 0x10000, CRC(a56f3c20) SHA1(cb440e0e612da8b8a50fe25a6336869b62ab4cfd) ) - ROM_LOAD( "ic95.16", 0x020000, 0x10000, CRC(14df4659) SHA1(d73fab0a8c1e56a26cc15333a294e876f1552bc9) ) - ROM_LOAD( "ic124.15", 0x010000, 0x10000, CRC(4702c768) SHA1(ff996f1355f32451fa57836c2255027a8108eb40) ) - ROM_LOAD( "ic125.14", 0x030000, 0x10000, CRC(bd5c2f4b) SHA1(3c71d63637633a98ab513e4336e2954af3f964f4) ) + ROM_LOAD( "sp-29.ic94", 0x000000, 0x10000, CRC(a56f3c20) SHA1(cb440e0e612da8b8a50fe25a6336869b62ab4cfd) ) // 27C512 + ROM_LOAD( "sp-28.ic95", 0x020000, 0x10000, CRC(14df4659) SHA1(d73fab0a8c1e56a26cc15333a294e876f1552bc9) ) // 27C512 + ROM_LOAD( "sp-27.ic124", 0x010000, 0x10000, CRC(4702c768) SHA1(ff996f1355f32451fa57836c2255027a8108eb40) ) // 27C512 + ROM_LOAD( "sp-26.ic125", 0x030000, 0x10000, CRC(bd5c2f4b) SHA1(3c71d63637633a98ab513e4336e2954af3f964f4) ) // 27C512 - /* Unused */ - ROM_REGION( 0x008000, "key", 0) - ROM_LOAD( "extra-27c256.bin", 0x00000, 0x08000, CRC(100dda13) SHA1(9a0b6d4439127abc4995c9df3839bfe1f13d8bc2) ) + // Unused + ROM_REGION( 0x008800, "extra", 0) + // "sp2-15" contains the same pattern repeated several times + ROM_LOAD( "sp2-15.bin", 0x00000, 0x08000, CRC(100dda13) SHA1(9a0b6d4439127abc4995c9df3839bfe1f13d8bc2) ) // 27C256 + // "sp2-16" can be found as a 76161 PROM or as a 27C256 with its first 6KB empty + ROM_LOAD( "sp2-16.bin", 0x08000, 0x00800, CRC(16dbd461) SHA1(1759ad71df8deb5452b3ee92aa2ece1ee79ff469) ) // M1-76161-5 - /* Unsused */ - ROM_REGION( 0x000104, "plds", 0) - ROM_LOAD( "1-pal16l8.ic32", 0x0000, 0x0104, CRC(b78ee715) SHA1(df9ed2bef394b4e26ac87bd39d81f4df2b5cefe5) ) + // Unsused + ROM_REGION( 0x000505, "plds", 0) + ROM_LOAD( "1-hy18cv8s.ic4", 0x0000, 0x0155, CRC(a93edbf5) SHA1(57ac314e6d501be903e313aec4e083d642bebebe) ) + ROM_LOAD( "2-pal16l8acn.ic32", 0x0155, 0x0104, CRC(b78ee715) SHA1(df9ed2bef394b4e26ac87bd39d81f4df2b5cefe5) ) + ROM_LOAD( "3-hy18cv8s.ic101", 0x0259, 0x0155, CRC(c5c1b9e2) SHA1(df10e706a212709bec415943a6409dd0eb8f72aa) ) + ROM_LOAD( "4-gal20v8.bin", 0x03ae, 0x0157, CRC(29a2653d) SHA1(38426af27d9c48e650c74fc3d9a9a612d11e413c) ) ROM_END /* seems to be the same basic hardware, but the memory map and io map are different at least.. */ diff --git a/src/mame/drivers/namcofl.cpp b/src/mame/drivers/namcofl.cpp index 426bf6f4602..15c255b2e09 100644 --- a/src/mame/drivers/namcofl.cpp +++ b/src/mame/drivers/namcofl.cpp @@ -599,6 +599,7 @@ MACHINE_CONFIG_START(namcofl_state::namcofl) m_c123tmap->set_color_base(0x1000); NAMCO_C116(config, m_c116, 0); + m_c116->enable_shadows(); MCFG_VIDEO_START_OVERRIDE(namcofl_state,namcofl) diff --git a/src/mame/drivers/pcat_dyn.cpp b/src/mame/drivers/pcat_dyn.cpp index 72ff59519f0..68f39874ebc 100644 --- a/src/mame/drivers/pcat_dyn.cpp +++ b/src/mame/drivers/pcat_dyn.cpp @@ -197,13 +197,13 @@ MACHINE_CONFIG_START(pcat_dyn_state::pcat_dyn) uart.out_rts_callback().set("serport", FUNC(rs232_port_device::write_rts)); uart.out_int_callback().set("pic8259_1", FUNC(pic8259_device::ir4_w)); - MCFG_DEVICE_ADD( "serport", RS232_PORT, pcat_dyn_com, "msmouse" ) - MCFG_SLOT_FIXED(true) - MCFG_RS232_RXD_HANDLER(WRITELINE("ns16550", ins8250_uart_device, rx_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE("ns16550", ins8250_uart_device, dcd_w)) - MCFG_RS232_DSR_HANDLER(WRITELINE("ns16550", ins8250_uart_device, dsr_w)) - MCFG_RS232_RI_HANDLER(WRITELINE("ns16550", ins8250_uart_device, ri_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("ns16550", ins8250_uart_device, cts_w)) + rs232_port_device &serport(RS232_PORT(config, "serport", pcat_dyn_com, "msmouse")); + serport.set_fixed(true); + serport.rxd_handler().set("ns16550", FUNC(ins8250_uart_device::rx_w)); + serport.dcd_handler().set("ns16550", FUNC(ins8250_uart_device::dcd_w)); + serport.dsr_handler().set("ns16550", FUNC(ins8250_uart_device::dsr_w)); + serport.ri_handler().set("ns16550", FUNC(ins8250_uart_device::ri_w)); + serport.cts_handler().set("ns16550", FUNC(ins8250_uart_device::cts_w)); MCFG_DEVICE_ADD("isa", ISA8, 0) MCFG_ISA8_CPU("maincpu") diff --git a/src/mame/drivers/pk8020.cpp b/src/mame/drivers/pk8020.cpp index 7532358a663..df4816d16db 100644 --- a/src/mame/drivers/pk8020.cpp +++ b/src/mame/drivers/pk8020.cpp @@ -238,10 +238,10 @@ MACHINE_CONFIG_START(pk8020_state::pk8020) 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)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr)); + rs232.rxd_handler().set(m_rs232, FUNC(i8251_device::write_rxd)); + rs232.cts_handler().set(m_rs232, FUNC(i8251_device::write_cts)); + rs232.dsr_handler().set(m_rs232, FUNC(i8251_device::write_dsr)); I8251(config, m_lan, 0); diff --git a/src/mame/drivers/px4.cpp b/src/mame/drivers/px4.cpp index 0d443f09eda..b582b4e5251 100644 --- a/src/mame/drivers/px4.cpp +++ b/src/mame/drivers/px4.cpp @@ -1535,11 +1535,11 @@ MACHINE_CONFIG_START(px4_state::px4) MCFG_EPSON_SIO_PIN(WRITELINE(*this, px4_state, sio_pin_w)) // rs232 port - MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(*this, px4_state, rs232_rx_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(*this, px4_state, rs232_dcd_w)) - MCFG_RS232_DSR_HANDLER(WRITELINE(*this, px4_state, rs232_dsr_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE(*this, px4_state, rs232_cts_w)) + RS232_PORT(config, m_rs232, default_rs232_devices, nullptr); + m_rs232->rxd_handler().set(FUNC(px4_state::rs232_rx_w)); + m_rs232->dcd_handler().set(FUNC(px4_state::rs232_dcd_w)); + m_rs232->dsr_handler().set(FUNC(px4_state::rs232_dsr_w)); + m_rs232->cts_handler().set(FUNC(px4_state::rs232_cts_w)); // rom capsules MCFG_GENERIC_CARTSLOT_ADD("capsule1", generic_plain_slot, "px4_cart") diff --git a/src/mame/drivers/qx10.cpp b/src/mame/drivers/qx10.cpp index b94c8b8e409..52201c6c584 100644 --- a/src/mame/drivers/qx10.cpp +++ b/src/mame/drivers/qx10.cpp @@ -777,7 +777,7 @@ MACHINE_CONFIG_START(qx10_state::qx10) UPD7201(config, m_scc, MAIN_CLK/4); // channel b clock set by pit2 channel 2 // Channel A: Keyboard - m_scc->out_txda_callback().set("kbd", FUNC(rs232_port_device::write_txd)); + m_scc->out_txda_callback().set(m_kbd, FUNC(rs232_port_device::write_txd)); // Channel B: RS232 m_scc->out_txdb_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); m_scc->out_dtrb_callback().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); @@ -814,11 +814,11 @@ MACHINE_CONFIG_START(qx10_state::qx10) FLOPPY_CONNECTOR(config, m_floppy[0], qx10_floppies, "525dd", floppy_image_device::default_floppy_formats); FLOPPY_CONNECTOR(config, m_floppy[1], qx10_floppies, "525dd", floppy_image_device::default_floppy_formats); - MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(m_scc, upd7201_device, rxb_w)) + rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); + rs232.rxd_handler().set(m_scc, FUNC(upd7201_device::rxb_w)); - MCFG_DEVICE_ADD("kbd", RS232_PORT, keyboard, "qx10") - MCFG_RS232_RXD_HANDLER(WRITELINE(m_scc, z80dart_device, rxa_w)) + RS232_PORT(config, m_kbd, keyboard, "qx10"); + m_kbd->rxd_handler().set(m_scc, FUNC(upd7201_device::rxa_w)); /* internal ram */ RAM(config, RAM_TAG).set_default_size("256K"); diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp index 37bcfef0172..646d84ed48d 100644 --- a/src/mame/drivers/rainbow.cpp +++ b/src/mame/drivers/rainbow.cpp @@ -3282,14 +3282,13 @@ MACHINE_CONFIG_START(rainbow_state::rainbow) m_hdc->out_step_callback().set(FUNC(rainbow_state::hdc_step)); // STEP PULSE m_hdc->out_dirin_callback().set(FUNC(rainbow_state::hdc_direction)); - m_hdc->in_wf_callback().set(FUNC(rainbow_state::hdc_write_fault)); // WRITE FAULT (set to GND if not serviced) + // WF + DRDY are actually wired to a routine here: + m_hdc->in_wf_callback().set(FUNC(rainbow_state::hdc_write_fault)); // WRITE FAULT (fatal until next reset) + m_hdc->in_drdy_callback().set(FUNC(rainbow_state::hdc_drive_ready)); // DRIVE_READY (VCC = ready) - m_hdc->in_drdy_callback().set(FUNC(rainbow_state::hdc_drive_ready)); // DRIVE_READY (set to VCC if not serviced) - - m_hdc->in_sc_callback().set_constant(1); // SEEK COMPLETE (set to VCC if not serviced) - - m_hdc->in_tk000_callback().set_constant(1); // CURRENTLY NOT EVALUATED WITHIN 'WD2010' - m_hdc->in_wf_callback().set_constant(1); // " + // Always set seek complete and track 00 signal (not super clean, but does not affect operation): + m_hdc->in_sc_callback().set_constant(1); // SEEK COMPLETE (VCC = complete) + m_hdc->in_tk000_callback().set_constant(1); // TRACK 00 signal (= from drive) MCFG_HARDDISK_ADD("decharddisk1") /// ******************************** / HARD DISK CONTROLLER **************************************** @@ -3312,27 +3311,25 @@ MACHINE_CONFIG_START(rainbow_state::rainbow) UPD7201_NEW(config, m_mpsc, 24.0734_MHz_XTAL / 5 / 2); // 2.4073 MHz (nominally 2.5 MHz) m_mpsc->out_int_callback().set(FUNC(rainbow_state::mpsc_irq)); - m_mpsc->out_txda_callback().set("comm", FUNC(rs232_port_device::write_txd)); + m_mpsc->out_txda_callback().set(m_comm_port, FUNC(rs232_port_device::write_txd)); m_mpsc->out_txdb_callback().set("printer", FUNC(rs232_port_device::write_txd)); // RTS and DTR outputs are not connected - MCFG_DEVICE_ADD("comm", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(m_mpsc, upd7201_new_device, rxa_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE(m_mpsc, upd7201_new_device, ctsa_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(m_mpsc, upd7201_new_device, dcda_w)) + RS232_PORT(config, m_comm_port, default_rs232_devices, nullptr); + m_comm_port->rxd_handler().set(m_mpsc, FUNC(upd7201_new_device::rxa_w)); + m_comm_port->cts_handler().set(m_mpsc, FUNC(upd7201_new_device::ctsa_w)); + m_comm_port->dcd_handler().set(m_mpsc, FUNC(upd7201_new_device::dcda_w)); - MCFG_DEVICE_ADD("printer", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(m_mpsc, upd7201_new_device, rxb_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(m_mpsc, upd7201_new_device, ctsb_w)) // actually DTR + rs232_port_device &printer(RS232_PORT(config, "printer", default_rs232_devices, nullptr)); + printer.rxd_handler().set(m_mpsc, FUNC(upd7201_new_device::rxb_w)); + printer.dcd_handler().set(m_mpsc, FUNC(upd7201_new_device::ctsb_w)); // actually DTR - MCFG_DEVICE_MODIFY("comm") - MCFG_SLOT_OPTION_ADD("microsoft_mouse", MSFT_HLE_SERIAL_MOUSE) - MCFG_SLOT_OPTION_ADD("logitech_mouse", LOGITECH_HLE_SERIAL_MOUSE) - MCFG_SLOT_OPTION_ADD("msystems_mouse", MSYSTEMS_HLE_SERIAL_MOUSE) - MCFG_SLOT_DEFAULT_OPTION("logitech_mouse") + m_comm_port->option_add("microsoft_mouse", MSFT_HLE_SERIAL_MOUSE); + m_comm_port->option_add("logitech_mouse", LOGITECH_HLE_SERIAL_MOUSE); + m_comm_port->option_add("msystems_mouse", MSYSTEMS_HLE_SERIAL_MOUSE); + m_comm_port->set_default_option("logitech_mouse"); - MCFG_DEVICE_MODIFY("printer") - MCFG_SLOT_DEFAULT_OPTION("printer") + printer.set_default_option("printer"); I8251(config, m_kbd8251, 24.0734_MHz_XTAL / 5 / 2); m_kbd8251->txd_handler().set(FUNC(rainbow_state::kbd_tx)); diff --git a/src/mame/drivers/rex6000.cpp b/src/mame/drivers/rex6000.cpp index 92973c5e49b..cc605ff6e1b 100644 --- a/src/mame/drivers/rex6000.cpp +++ b/src/mame/drivers/rex6000.cpp @@ -927,12 +927,12 @@ MACHINE_CONFIG_START(rex6000_state::rex6000) m_uart->out_rts_callback().set("serport", FUNC(rs232_port_device::write_rts)); m_uart->out_int_callback().set(FUNC(rex6000_state::serial_irq)); - MCFG_DEVICE_ADD( "serport", RS232_PORT, default_rs232_devices, nullptr ) - MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, rx_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dcd_w)) - MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dsr_w)) - MCFG_RS232_RI_HANDLER(WRITELINE(m_uart, ins8250_uart_device, ri_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, ins8250_uart_device, cts_w)) + rs232_port_device &serport(RS232_PORT(config, "serport", default_rs232_devices, nullptr)); + serport.rxd_handler().set(m_uart, FUNC(ins8250_uart_device::rx_w)); + serport.dcd_handler().set(m_uart, FUNC(ins8250_uart_device::dcd_w)); + serport.dsr_handler().set(m_uart, FUNC(ins8250_uart_device::dsr_w)); + serport.ri_handler().set(m_uart, FUNC(ins8250_uart_device::ri_w)); + serport.cts_handler().set(m_uart, FUNC(ins8250_uart_device::cts_w)); /* quickload */ MCFG_QUICKLOAD_ADD("quickload", rex6000_state, rex6000, "rex,ds2", 0) @@ -977,12 +977,12 @@ MACHINE_CONFIG_START(oz750_state::oz750) m_uart->out_rts_callback().set("serport", FUNC(rs232_port_device::write_rts)); m_uart->out_int_callback().set(FUNC(rex6000_state::serial_irq)); - MCFG_DEVICE_ADD( "serport", RS232_PORT, default_rs232_devices, nullptr ) - MCFG_RS232_RXD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, rx_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dcd_w)) - MCFG_RS232_DSR_HANDLER(WRITELINE(m_uart, ins8250_uart_device, dsr_w)) - MCFG_RS232_RI_HANDLER(WRITELINE(m_uart, ins8250_uart_device, ri_w)) - //MCFG_RS232_CTS_HANDLER(WRITELINE(m_uart, ins8250_uart_device, cts_w)) + rs232_port_device &serport(RS232_PORT(config, "serport", default_rs232_devices, nullptr)); + serport.rxd_handler().set(m_uart, FUNC(ins8250_uart_device::rx_w)); + serport.dcd_handler().set(m_uart, FUNC(ins8250_uart_device::dcd_w)); + serport.dsr_handler().set(m_uart, FUNC(ins8250_uart_device::dsr_w)); + serport.ri_handler().set(m_uart, FUNC(ins8250_uart_device::ri_w)); + //serport.cts_handler().set(m_uart, FUNC(ins8250_uart_device::cts_w)); /* video hardware */ MCFG_SCREEN_ADD("screen", LCD) diff --git a/src/mame/drivers/sdk80.cpp b/src/mame/drivers/sdk80.cpp index 1a3be1c2c6f..a271dcb4822 100644 --- a/src/mame/drivers/sdk80.cpp +++ b/src/mame/drivers/sdk80.cpp @@ -121,29 +121,30 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) // set up terminal to default to DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 ) DEVICE_INPUT_DEFAULTS_END -MACHINE_CONFIG_START(sdk80_state::sdk80) +void sdk80_state::sdk80(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(18'432'000)/9) - MCFG_DEVICE_PROGRAM_MAP(sdk80_mem) - MCFG_DEVICE_IO_MAP(sdk80_io) + I8080A(config, m_maincpu, XTAL(18'432'000)/9); + m_maincpu->set_addrmap(AS_PROGRAM, &sdk80_state::sdk80_mem); + m_maincpu->set_addrmap(AS_IO, &sdk80_state::sdk80_io); 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) + I8255A(config, m_ppi_0); + I8255A(config, m_ppi_1); - MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, "terminal") - MCFG_RS232_RXD_HANDLER(WRITELINE(I8251A_TAG, i8251_device, write_rxd)) - MCFG_RS232_DSR_HANDLER(WRITELINE(I8251A_TAG, i8251_device, write_dsr)) - MCFG_RS232_CTS_HANDLER(WRITELINE(I8251A_TAG, i8251_device, write_cts)) - MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal) + RS232_PORT(config, m_rs232, default_rs232_devices, "terminal"); + m_rs232->rxd_handler().set(m_usart, FUNC(i8251_device::write_rxd)); + m_rs232->dsr_handler().set(m_usart, FUNC(i8251_device::write_dsr)); + m_rs232->cts_handler().set(m_usart, FUNC(i8251_device::write_cts)); + m_rs232->set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); - MCFG_DEVICE_ADD("usart_clock", CLOCK, XTAL(18'432'000)/60) - MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, sdk80_state, usart_clock_tick)) -MACHINE_CONFIG_END + clock_device &clock(CLOCK(config, "usart_clock", XTAL(18'432'000)/60)); + clock.signal_handler().set(FUNC(sdk80_state::usart_clock_tick)); +} /* ROM definition */ ROM_START( sdk80 ) diff --git a/src/mame/drivers/sdk86.cpp b/src/mame/drivers/sdk86.cpp index 62232115d66..490d855cad0 100644 --- a/src/mame/drivers/sdk86.cpp +++ b/src/mame/drivers/sdk86.cpp @@ -145,11 +145,12 @@ static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_2 ) DEVICE_INPUT_DEFAULTS_END -MACHINE_CONFIG_START(sdk86_state::sdk86) +void sdk86_state::sdk86(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", I8086, XTAL(14'745'600)/3) /* divided down by i8284 clock generator; jumper selection allows it to be slowed to 2.5MHz, hence changing divider from 3 to 6 */ - MCFG_DEVICE_PROGRAM_MAP(sdk86_mem) - MCFG_DEVICE_IO_MAP(sdk86_io) + I8086(config, m_maincpu, XTAL(14'745'600)/3); /* divided down by i8284 clock generator; jumper selection allows it to be slowed to 2.5MHz, hence changing divider from 3 to 6 */ + m_maincpu->set_addrmap(AS_PROGRAM, &sdk86_state::sdk86_mem); + m_maincpu->set_addrmap(AS_IO, &sdk86_state::sdk86_io); /* video hardware */ config.set_default_layout(layout_sdk86); @@ -160,10 +161,10 @@ MACHINE_CONFIG_START(sdk86_state::sdk86) 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)) - MCFG_RS232_DSR_HANDLER(WRITELINE(I8251_TAG, i8251_device, write_dsr)) - MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("terminal", terminal) + rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, "terminal")); + rs232.rxd_handler().set(I8251_TAG, FUNC(i8251_device::write_rxd)); + rs232.dsr_handler().set(I8251_TAG, FUNC(i8251_device::write_dsr)); + rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); clock_device &usart_clock(CLOCK(config, "usart_clock", XTAL(14'745'600)/3/16)); usart_clock.signal_handler().set(I8251_TAG, FUNC(i8251_device::write_txc)); @@ -176,9 +177,9 @@ MACHINE_CONFIG_START(sdk86_state::sdk86) kbdc.in_shift_callback().set_constant(0); // Shift key kbdc.in_ctrl_callback().set_constant(0); - MCFG_DEVICE_ADD("port1", I8255A, 0) - MCFG_DEVICE_ADD("port2", I8255A, 0) -MACHINE_CONFIG_END + I8255A(config, "port1"); + I8255A(config, "port2"); +} /* ROM definition */ ROM_START( sdk86 ) diff --git a/src/mame/drivers/sitcom.cpp b/src/mame/drivers/sitcom.cpp index ef26cbdbda6..e2c062a321d 100644 --- a/src/mame/drivers/sitcom.cpp +++ b/src/mame/drivers/sitcom.cpp @@ -372,8 +372,8 @@ MACHINE_CONFIG_START(sitcom_state::sitcom) MCFG_DL1414_UPDATE_HANDLER(WRITE16(*this, sitcom_state, update_ds<1>)) // host interface - MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "null_modem") - MCFG_RS232_RXD_HANDLER(WRITELINE(*this, sitcom_state, update_rxd)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "null_modem")); + rs232.rxd_handler().set(FUNC(sitcom_state::update_rxd)); MCFG_SOFTWARE_LIST_ADD("bitb_list", "sitcom") config.set_default_layout(layout_sitcom); diff --git a/src/mame/drivers/sm7238.cpp b/src/mame/drivers/sm7238.cpp index 1a1c26dafda..38170e09129 100644 --- a/src/mame/drivers/sm7238.cpp +++ b/src/mame/drivers/sm7238.cpp @@ -406,10 +406,10 @@ MACHINE_CONFIG_START(sm7238_state::sm7238) 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)) - MCFG_RS232_CTS_HANDLER(WRITELINE("i8251line", i8251_device, write_cts)) - MCFG_RS232_DSR_HANDLER(WRITELINE("i8251line", i8251_device, write_dsr)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "null_modem")); + rs232.rxd_handler().set(m_i8251line, FUNC(i8251_device::write_rxd)); + rs232.cts_handler().set(m_i8251line, FUNC(i8251_device::write_cts)); + rs232.dsr_handler().set(m_i8251line, FUNC(i8251_device::write_dsr)); // serial connection to KM-035 keyboard I8251(config, m_i8251kbd, 0); @@ -424,10 +424,10 @@ MACHINE_CONFIG_START(sm7238_state::sm7238) 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)) - MCFG_RS232_CTS_HANDLER(WRITELINE("i8251prn", i8251_device, write_cts)) - MCFG_RS232_DSR_HANDLER(WRITELINE("i8251prn", i8251_device, write_dsr)) + rs232_port_device &prtr(RS232_PORT(config, "prtr", default_rs232_devices, nullptr)); + prtr.rxd_handler().set(m_i8251prn, FUNC(i8251_device::write_rxd)); + prtr.cts_handler().set(m_i8251prn, FUNC(i8251_device::write_cts)); + prtr.dsr_handler().set(m_i8251prn, FUNC(i8251_device::write_dsr)); MACHINE_CONFIG_END ROM_START( sm7238 ) diff --git a/src/mame/drivers/twinkle.cpp b/src/mame/drivers/twinkle.cpp index b656674bda5..8470176ad3d 100644 --- a/src/mame/drivers/twinkle.cpp +++ b/src/mame/drivers/twinkle.cpp @@ -1109,19 +1109,19 @@ MACHINE_CONFIG_START(twinkle_state::twinkle) m_ata->irq_handler().set(FUNC(twinkle_state::spu_ata_irq)); m_ata->dmarq_handler().set(FUNC(twinkle_state::spu_ata_dmarq)); - MCFG_DEVICE_ADD("rtc", RTC65271, 0) + RTC65271(config, "rtc", 0); - MCFG_DEVICE_ADD("fdc37c665gt", FDC37C665GT, XTAL(24'000'000)) + FDC37C665GT(config, "fdc37c665gt", XTAL(24'000'000)); - MCFG_DEVICE_ADD("rs232", RS232_PORT, 0) - MCFG_SLOT_OPTION_ADD("xvd701", JVC_XVD701) -// MCFG_SLOT_OPTION_ADD("xvs1100", JVC_XVS1100) // 8th mix only - MCFG_SLOT_DEFAULT_OPTION("xvd701") - MCFG_RS232_RXD_HANDLER(WRITELINE("fdc37c665gt:uart2", ins8250_uart_device, rx_w)) - MCFG_RS232_DCD_HANDLER(WRITELINE("fdc37c665gt:uart2", ins8250_uart_device, dcd_w)) - MCFG_RS232_DSR_HANDLER(WRITELINE("fdc37c665gt:uart2", ins8250_uart_device, dsr_w)) - MCFG_RS232_RI_HANDLER(WRITELINE("fdc37c665gt:uart2", ins8250_uart_device, ri_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("fdc37c665gt:uart2", ins8250_uart_device, cts_w)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", 0)); + rs232.option_add("xvd701", JVC_XVD701); +// rs232.option_add("xvs1100", JVC_XVS1100); // 8th mix only + rs232.set_default_option("xvd701"); + rs232.rxd_handler().set("fdc37c665gt:uart2", FUNC(ins8250_uart_device::rx_w)); + rs232.dcd_handler().set("fdc37c665gt:uart2", FUNC(ins8250_uart_device::dcd_w)); + rs232.dsr_handler().set("fdc37c665gt:uart2", FUNC(ins8250_uart_device::dsr_w)); + rs232.ri_handler().set("fdc37c665gt:uart2", FUNC(ins8250_uart_device::ri_w)); + rs232.cts_handler().set("fdc37c665gt:uart2", FUNC(ins8250_uart_device::cts_w)); ns16550_device &uart(*subdevice("fdc37c665gt:uart2")); uart.out_tx_callback().set("rs232", FUNC(rs232_port_device::write_txd)); diff --git a/src/mame/drivers/unixpc.cpp b/src/mame/drivers/unixpc.cpp index 33a9c640971..b71015bb4ab 100644 --- a/src/mame/drivers/unixpc.cpp +++ b/src/mame/drivers/unixpc.cpp @@ -398,10 +398,10 @@ MACHINE_CONFIG_START(unixpc_state::unixpc) // TODO: RTC //MCFG_DEVICE_ADD("rtc", TC8250, 32.768_kHz_XTAL) - MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE("mpsc", upd7201_new_device, rxa_w)) - MCFG_RS232_DSR_HANDLER(WRITELINE("mpsc", upd7201_new_device, dcda_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("mpsc", upd7201_new_device, ctsa_w)) + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr)); + rs232.rxd_handler().set("mpsc", FUNC(upd7201_new_device::rxa_w)); + rs232.dsr_handler().set("mpsc", FUNC(upd7201_new_device::dcda_w)); + rs232.cts_handler().set("mpsc", FUNC(upd7201_new_device::ctsa_w)); MCFG_DEVICE_ADD("printer", CENTRONICS, centronics_devices, nullptr) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("printlatch", "printer") diff --git a/src/mame/drivers/vt240.cpp b/src/mame/drivers/vt240.cpp index 938eaf4142b..3e872ede8b2 100644 --- a/src/mame/drivers/vt240.cpp +++ b/src/mame/drivers/vt240.cpp @@ -681,9 +681,9 @@ MACHINE_CONFIG_START(vt240_state::vt240) MCFG_UPD7220_BLANK_CALLBACK(INPUTLINE("charcpu", I8085_RST55_LINE)) MCFG_VIDEO_SET_SCREEN("screen") - MCFG_DEVICE_ADD("duart", SCN2681, XTAL(7'372'800) / 2) + MCFG_DEVICE_ADD(m_duart, SCN2681, XTAL(7'372'800) / 2) MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, vt240_state, irq13_w)) - MCFG_MC68681_A_TX_CALLBACK(WRITELINE("host", rs232_port_device, write_txd)) + MCFG_MC68681_A_TX_CALLBACK(WRITELINE(m_host, rs232_port_device, write_txd)) MCFG_MC68681_B_TX_CALLBACK(WRITELINE("printer", rs232_port_device, write_txd)) MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, vt240_state, duartout_w)) @@ -699,14 +699,14 @@ MACHINE_CONFIG_START(vt240_state::vt240) MCFG_DEVICE_ADD("keyboard_clock", CLOCK, 4800 * 64) // 8251 is set to /64 on the clock input MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, vt240_state, write_keyboard_clock)) - MCFG_DEVICE_ADD("host", RS232_PORT, default_rs232_devices, "null_modem") - MCFG_RS232_RXD_HANDLER(WRITELINE("duart", scn2681_device, rx_a_w)) - MCFG_RS232_DSR_HANDLER(WRITELINE("duart", scn2681_device, ip5_w)) - MCFG_RS232_CTS_HANDLER(WRITELINE("duart", scn2681_device, ip0_w)) + RS232_PORT(config, m_host, default_rs232_devices, "null_modem"); + m_host->rxd_handler().set(m_duart, FUNC(scn2681_device::rx_a_w)); + m_host->dsr_handler().set(m_duart, FUNC(scn2681_device::ip5_w)); + m_host->cts_handler().set(m_duart, FUNC(scn2681_device::ip0_w)); - MCFG_DEVICE_ADD("printer", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE("duart", scn2681_device, rx_b_w)) - MCFG_RS232_DSR_HANDLER(WRITELINE("duart", scn2681_device, ip1_w)) + rs232_port_device &printer(RS232_PORT(config, "printer", default_rs232_devices, nullptr)); + printer.rxd_handler().set(m_duart, FUNC(scn2681_device::rx_b_w)); + printer.dsr_handler().set(m_duart, FUNC(scn2681_device::ip1_w)); X2212(config, "x2212"); MACHINE_CONFIG_END diff --git a/src/mame/machine/cit101_kbd.h b/src/mame/machine/cit101_kbd.h index 4ffc070e269..1b36653f44a 100644 --- a/src/mame/machine/cit101_kbd.h +++ b/src/mame/machine/cit101_kbd.h @@ -16,14 +16,6 @@ #include "diserial.h" -//************************************************************************** -// CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_CIT101_HLE_KEYBOARD_TXD_CALLBACK(_devcb) \ - downcast(*device).set_txd_callback(DEVCB_##_devcb); - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -34,10 +26,10 @@ class cit101_hle_keyboard_device : public device_t, public device_matrix_keyboar { public: // construction/destruction - cit101_hle_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + cit101_hle_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0); // configuration - template devcb_base &set_txd_callback(Object &&cb) { return m_txd_callback.set_callback(std::forward(cb)); } + auto txd_callback() { return m_txd_callback.bind(); } DECLARE_WRITE_LINE_MEMBER(write_rxd); diff --git a/src/mame/video/namcofl.cpp b/src/mame/video/namcofl.cpp index a0a1cacd2c6..8e7ec0721bc 100644 --- a/src/mame/video/namcofl.cpp +++ b/src/mame/video/namcofl.cpp @@ -99,7 +99,8 @@ WRITE32_MEMBER(namcofl_state::namcofl_spritebank_w) int namcofl_state::FLobjcode2tile(int code) { - if ((code & 0x2000) && (m_sprbank & 2)) { code += 0x4000; } + if (BIT(code, 13)) + return (m_sprbank << 13) | (code & 0x1fff); return code; }