[net.unix] 8 bit I/O vs 4BSD

chris@umcp-cs.UUCP (Chris Torek) (11/27/84)

I think everyone realizes that if you are going to preempt characters
for flow control, they aren't going to be available for data.  You
*can* have an 8 bit data path in *both* directions *and* have flow
control; you just have to give up at least one character (it can still
be sent by using some kind of protocol, of course).

However, the Berkeley tty drivers just don't allow it.  Here's what
goes wrong, at least, what I can think of easily (I haven't tried to
implement 8 bits myself): (1) delays can't be done by meta characters
[this is a problem with LITOUT mode too!]; (2) what if you want the
input character '\377' as a special character?; (3) how do you tell how
many bits should be used to check for special characters; i.e., is
meta-^S a stop character or not?; (4) You have to change every single
da[rm]ned device driver to do things differently because of (1-3).

Speaking of flow control, has anyone ever thought about how much
problems using in-band data for this has caused?  If terminals had
hardware flow control, we might not have kludges like the pty driver
sending special packets whenever t_startc and t_stopc change from/to
^Q/^S, and rlogind flushing perfectly good data just to get that OOB
data, and . . . [froth froth].  Have you ever noticed that the pty
driver *doesn't* send any messages about any other state changes (like
raw mode?) [rant rant].  You'd think that if Berkeley saw fit to
provide info about changes in local flow control on a network port to
the program doing the connecting, they'd also see fit to provide nice
ways to get the entire state across, not just one tiny bit [rave
rave].  I'd better stop, I'm getting out of hand here.  Maybe I should
add net.flame.... :-)
-- 
(This line accidently left nonblank.)

In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (301) 454-7690
UUCP:	{seismo,allegra,brl-bmd}!umcp-cs!chris
CSNet:	chris@umcp-cs		ARPA:	chris@maryland

henry@utzoo.UUCP (Henry Spencer) (11/30/84)

> Speaking of flow control, has anyone ever thought about how much
> problems using in-band data for this has caused?  If terminals had
> hardware flow control, we might not have kludges like ...

It's hard to make hardware flow control work over phone modems that only
support in-band data.  Or over any long-propagation-delay network, unless
you use positive control ("ok, send me N more bytes") rather than negative
control ("stop!  my buffers are full!").  Note that many of the ASCII
control characters, including DC1 and DC3 (XON and XOFF), are explicitly
reserved for this sort of control function.  That is, they technically
are *not* "in-band data", and people who use them as such do so at their
own risk.
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry