I can't really tell if it is correct for the Rainbow as I don't know that machine but it looks ok.

If you turn on logging in z80sio.cpp by setting some of the LOG bits then you'll see what's going on, I'll suggest you use

Code
#define VERBOSE (LOG_SETUP|LOG_INT|LOG_CMD|LOG_DCD|LOG_CTS|LOG_TX|LOG_RX|LOG_GENERAL)
#define LOG_OUTPUT_FUNC printf

You can remove LOG bits if it gets too cluttered. For instance you will see the baudrate as seen by the 7201 and you will see special commands such as software iacks. The LOG_OUTPUT_FUNC directs the output to your terminal so you can use more, less or grep on the log or just direct it to a file, quite handy compared to the MAME log window

The call to m1_r() on line 2571 is not needed as the 7201 does not have an M1 input, instead it expects to get a software iack.


Because I can