diff --git a/src/mess/drivers/clcd.c b/src/mess/drivers/clcd.c index ffd22c945ac..373b301c5a7 100644 --- a/src/mess/drivers/clcd.c +++ b/src/mess/drivers/clcd.c @@ -11,6 +11,7 @@ #include "emu.h" +#include "bus/centronics/ctronics.h" #include "cpu/m6502/m65c02.h" #include "machine/6522via.h" #include "machine/bankdev.h" @@ -30,6 +31,7 @@ public: m_maincpu(*this, "maincpu"), m_via0(*this, "via0"), m_rtc(*this, "rtc"), + m_centronics(*this, "centronics"), m_ram(*this,"ram"), m_bank1(*this, "bank1"), m_bank2(*this, "bank2"), @@ -479,13 +481,28 @@ public: WRITE8_MEMBER(via1_pa_w) { - m_rtc->d0_w((data>>0) & 1); - m_rtc->d1_w((data>>1) & 1); - m_rtc->d2_w((data>>2) & 1); - m_rtc->d3_w((data>>3) & 1); - m_rtc->read_w((data>>4) & 1); - m_rtc->write_w((data>>5) & 1); - m_rtc->address_write_w((data>>6) & 1); + m_rtc->d0_w(BIT(data, 0)); + m_centronics->write_data0(BIT(data, 0)); + + m_rtc->d1_w(BIT(data, 1)); + m_centronics->write_data1(BIT(data, 1)); + + m_rtc->d2_w(BIT(data, 2)); + m_centronics->write_data2(BIT(data, 2)); + + m_rtc->d3_w(BIT(data, 3)); + m_centronics->write_data3(BIT(data, 3)); + + m_rtc->read_w(BIT(data, 4)); + m_centronics->write_data4(BIT(data, 4)); + + m_rtc->write_w(BIT(data, 5)); + m_centronics->write_data5(BIT(data, 5)); + + m_rtc->address_write_w(BIT(data, 6)); + m_centronics->write_data6(BIT(data, 6)); + + m_centronics->write_data7(BIT(data, 7)); } ram_device *ram() @@ -502,6 +519,7 @@ private: required_device m_maincpu; required_device m_via0; required_device m_rtc; + required_device m_centronics; required_device m_ram; required_device m_bank1; required_device m_bank2; @@ -700,6 +718,7 @@ static MACHINE_CONFIG_START(clcd, clcd_state) MCFG_DEVICE_ADD("via1", VIA6522, 0) MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(clcd_state, via1_pa_w)) MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m65c02_device, nmi_line)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, write_strobe)) MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE("speaker", speaker_sound_device, level_w)) MCFG_DEVICE_ADD("acia", MOS6551, XTAL_1_8432MHz) @@ -714,6 +733,8 @@ static MACHINE_CONFIG_START(clcd, clcd_state) MCFG_RS232_OUT_DSR_HANDLER(DEVWRITELINE("acia", mos6551_device, dsr_w)) MCFG_RS232_OUT_CTS_HANDLER(DEVWRITELINE("via1", via6522_device, write_pb4)) + MCFG_CENTRONICS_ADD("centronics", centronics_printers, "image") + MCFG_DEVICE_ADD("bank1", ADDRESS_MAP_BANK, 0) MCFG_DEVICE_PROGRAM_MAP(clcd_banked_mem) MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)