No major twiddling needs to be done. If your
select() refuses to
sleep less than one second, use poll(S) instead (set
the CFLAGS section of Makefile).
Use the modem-control devices for mgetty and dial-outs (e.g. /dev/tty2A), or (far better), use FAS with minor number of 80+port, using full RTS + CTS handshake, and non-blocking opens (/dev/ttyF01) - the original SCO serial driver is slow, unreliable and doesn’t do proper hardware flow control. See SCO-324.
Ignore all the warnings about “passing arg 2 of signal from incompatible pointer type”. They are caused because the SCO 3.2.2 development system header files are somewhat unusual.
If it doesn’t work, or some weird things happen on login (e.g., zmodem downloads do not work), try compiling with -DSYSV_TERMIO. I had some problems with Posix termios on SCO ODT 1.0.