Originally Posted by Bavarese
DTR and RTS output seem to be controlled entirely by the 808x (with some help by the BIOS). I have no idea how to reconcile that with the Z80DART (or Z80SIO) code. Is it possible the CPU controls these lines independently?

Additionally, the status of the RI, CTS and DSR lines have to be reflected on 808x port 02 ('comm_control_r' in Rainbow.cpp).

Tony Duell's schematics and the 2 stubs we have in RAINBOW.CPP -
Tony Duell's schematics vs. curent code (right)

Something like this?

https://git.redump.net/mame/tree/src/mame/drivers/cgenie.cpp#n240

Code
READ8_MEMBER( cgenie_state::control_r )
{
	uint8_t data = 0;

	data |= m_cassette->input() > 0 ? 1 : 0;
	data |= m_rs232_rx << 1;
	data |= m_rs232_dcd << 2;

	return data;
}

You just need to save the line state from the rs232 device and then return it in the appropriate location.