--- a/src/mame/sharp/x68k.h 2026-08-04 18:08:43.712316105 -0500 +++ b/src/mame/sharp/x68k.h 2026-08-04 18:06:29.498097848 -0500 @@ -172,18 +172,10 @@ uint8_t hdcvector = 0; uint8_t prnvector = 0; } m_ioc; - struct - { - int inputtype = 0; // determines which input is to be received - bool irqactive = false; // true if IRQ is being serviced - uint8_t irqvector = 0; - char last_mouse_x = 0; // previous mouse x-axis value - char last_mouse_y = 0; // previous mouse y-axis value - int bufferempty = 0; // non-zero if buffer is empty - } m_mouse; uint8_t m_ppi_portc = 0; bool m_dmac_int = false; bool m_mfp_int = false; + bool m_scc_int = false; bool m_exp_irq2[2]{}; bool m_exp_irq4[2]{}; bool m_exp_nmi[2]{}; @@ -195,7 +187,6 @@ uint32_t m_gvram_wait = 0; uint32_t m_tvram_wait = 0; uint32_t m_vram_wait_accum = 0; // 16.16 carry between accesses - emu_timer* m_mouse_timer = nullptr; emu_timer* m_led_timer = nullptr; unsigned char m_scc_prev = 0; emu_timer* m_fdc_tc = nullptr; --- a/src/mame/sharp/x68k.cpp 2026-08-04 18:08:43.712316105 -0500 +++ b/src/mame/sharp/x68k.cpp 2026-08-04 18:06:57.240157174 -0500 @@ -1236,6 +1236,20 @@ mouse.rxd_handler().set(m_scc, FUNC(scc8530_device::rxb_w)); m_scc->out_rtsb_callback().set(mouse, FUNC(rs232_port_device::write_rts)); + // RS-232C -- SCC channel A. Only channel B (the mouse) was ever wired, so + // the machine's actual serial port had no connection at all and could not + // be exercised. Exposing it as a standard rs232 slot makes + // `-rs232c null_modem` (TCP socket) and `-rs232c pty` available, which is + // what an automated both-directions serial test needs. + m_scc->out_txda_callback().set("rs232c", FUNC(rs232_port_device::write_txd)); + m_scc->out_dtra_callback().set("rs232c", FUNC(rs232_port_device::write_dtr)); + m_scc->out_rtsa_callback().set("rs232c", FUNC(rs232_port_device::write_rts)); + + rs232_port_device &rs232c(RS232_PORT(config, "rs232c", default_rs232_devices, nullptr)); + rs232c.rxd_handler().set(m_scc, FUNC(scc8530_device::rxa_w)); + rs232c.dcd_handler().set(m_scc, FUNC(scc8530_device::dcda_w)); + rs232c.cts_handler().set(m_scc, FUNC(scc8530_device::ctsa_w)); + RP5C15(config, m_rtc, 32.768_kHz_XTAL); m_rtc->alarm().set(m_mfpdev, FUNC(mc68901_device::i0_w)); m_rtc->set_year_offset(20);