diff options
Diffstat (limited to 'src/mame/drivers/cit101.cpp')
-rw-r--r-- | src/mame/drivers/cit101.cpp | 34 |
1 files changed, 19 insertions, 15 deletions
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<cpu_device> m_maincpu; required_device<screen_device> m_screen; required_device<er2055_device> m_nvr; + required_device<i8251_device> m_comuart; + required_device<i8251_device> m_kbduart; required_region_ptr<u8> m_chargen; required_shared_ptr<u8> m_mainram; required_shared_ptr<u8> m_extraram; @@ -117,8 +121,8 @@ private: void cit101_state::machine_start() { - subdevice<i8251_device>("comuart")->write_cts(0); - subdevice<i8251_device>("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)) |