diff --git a/src/mame/drivers/cit101.cpp b/src/mame/drivers/cit101.cpp index e11d1ec8636..843a21d786e 100644 --- a/src/mame/drivers/cit101.cpp +++ b/src/mame/drivers/cit101.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders: +// copyright-holders:AJR /*********************************************************************************************************************************** Skeleton driver for first-generation C. Itoh video terminals. @@ -44,7 +44,7 @@ CIG-267 ************************************************************************************************************************************/ #include "emu.h" -//#include "bus/rs232/rs232.h" +#include "bus/rs232/rs232.h" #include "cpu/i8085/i8085.h" #include "machine/er2055.h" #include "machine/i8251.h" @@ -115,12 +115,12 @@ void cit101_state::mem_map(address_map &map) map(0x0000, 0x3fff).rom().region("maincpu", 0); map(0x4000, 0xbfff).ram(); map(0xc000, 0xcfff).ram().share("videoram"); - map(0xfc00, 0xfc00).rw("usart0", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); - map(0xfc01, 0xfc01).rw("usart0", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); - map(0xfc20, 0xfc20).rw("usart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); - map(0xfc21, 0xfc21).rw("usart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); - map(0xfc40, 0xfc40).rw("usart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); - map(0xfc41, 0xfc41).rw("usart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xfc00, 0xfc00).rw("auxuart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xfc01, 0xfc01).rw("auxuart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xfc20, 0xfc20).rw("comuart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xfc21, 0xfc21).rw("comuart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0xfc40, 0xfc40).rw("kbduart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0xfc41, 0xfc41).rw("kbduart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); map(0xfc60, 0xfc63).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0xfc80, 0xfc83).w("pit0", FUNC(pit8253_device::write)); map(0xfcc0, 0xfcc3).w("pit1", FUNC(pit8253_device::write)); @@ -128,12 +128,12 @@ void cit101_state::mem_map(address_map &map) void cit101_state::io_map(address_map &map) { - map(0x00, 0x00).rw("usart0", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); - map(0x01, 0x01).rw("usart0", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); - map(0x20, 0x20).rw("usart1", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); - map(0x21, 0x21).rw("usart1", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); - map(0x40, 0x40).rw("usart2", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); - map(0x41, 0x41).rw("usart2", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x00, 0x00).rw("auxuart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x01, 0x01).rw("auxuart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x20, 0x20).rw("comuart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x21, 0x21).rw("comuart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); + map(0x40, 0x40).rw("kbduart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); + map(0x41, 0x41).rw("kbduart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); map(0x60, 0x63).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0xa0, 0xa0).nopw(); // ? map(0xe0, 0xe0).noprw(); // ? @@ -154,15 +154,37 @@ MACHINE_CONFIG_START(cit101_state::cit101) //MCFG_SCREEN_RAW_PARAMS(22.464_MHz_XTAL, 1440, 0, 1188, 260, 0, 240) MCFG_SCREEN_UPDATE_DRIVER(cit101_state, screen_update) - MCFG_DEVICE_ADD("usart0", I8251, 6.144_MHz_XTAL / 2) - MCFG_DEVICE_ADD("usart1", I8251, 6.144_MHz_XTAL / 2) - MCFG_DEVICE_ADD("usart2", I8251, 6.144_MHz_XTAL / 2) + MCFG_DEVICE_ADD("comuart", I8251, 6.144_MHz_XTAL / 2) + MCFG_I8251_TXD_HANDLER(DEVWRITELINE("comm", rs232_port_device, write_txd)) + MCFG_I8251_DTR_HANDLER(DEVWRITELINE("comm", rs232_port_device, write_dtr)) + MCFG_I8251_RTS_HANDLER(DEVWRITELINE("comm", rs232_port_device, write_rts)) - //MCFG_RS232_PORT_ADD("comm", default_rs232_devices, nullptr) - //MCFG_RS232_PORT_ADD("printer", default_rs232_devices, nullptr) + MCFG_RS232_PORT_ADD("comm", default_rs232_devices, nullptr) + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("comuart", i8251_device, write_rxd)) + MCFG_RS232_DSR_HANDLER(DEVWRITELINE("comuart", i8251_device, write_dsr)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("comuart", i8251_device, write_cts)) + + MCFG_DEVICE_ADD("auxuart", I8251, 6.144_MHz_XTAL / 2) + MCFG_I8251_TXD_HANDLER(DEVWRITELINE("printer", rs232_port_device, write_txd)) + MCFG_I8251_DTR_HANDLER(DEVWRITELINE("printer", rs232_port_device, write_dtr)) + MCFG_I8251_RTS_HANDLER(DEVWRITELINE("printer", rs232_port_device, write_rts)) + + MCFG_RS232_PORT_ADD("printer", default_rs232_devices, nullptr) + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("auxuart", i8251_device, write_rxd)) + MCFG_RS232_DSR_HANDLER(DEVWRITELINE("auxuart", i8251_device, write_dsr)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("auxuart", i8251_device, write_cts)) + + MCFG_DEVICE_ADD("kbduart", I8251, 6.144_MHz_XTAL / 2) 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_DEVICE_ADD("pit1", 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_DEVICE_ADD("ppi", I8255A, 0) MCFG_I8255_OUT_PORTA_CB(WRITE8(cit101_state, nvr_address_w))