Transmitting BREAK - (nf)

rpw3 at fortune.UUCP rpw3 at fortune.UUCP
Sun Apr 8 19:06:17 AEST 1984


#R:sri-arpa:-1674800:fortune:26900039:000:2930
fortune!rpw3    Apr  7 20:36:00 1984

Sorry, Mcferrin, Nelson is right.

While it is true that a <NUL> is all zeroes and a <DEL> is all ones,
the idle state of RS-232 data lines is MARK == ONE == +Volts.  A start
bit is a SPACE == ZERO == -Volts, and stop bits are ones.  Therefore,
if you want a big wide BREAK == "long space" == "long zeroes", better
send a slow <NUL>.

This is a historical anomaly left over, would you believe, from the original
days of the telegraph! Back then, everybody was wired in series (an arrangement
called "current loop" still seen in Teletype-based systems), and the idle
state of the line was with everybody's key shorted (closed) with that little
horizontal knife switch you see on the side of Morse Code keys.  To send, you
opened the switch (broke the line), and then sent. The "down" (or closed)
position of the key made a sound on the clicker or a "mark" on the paper
(for automatic strip paper recorders).  The "up"/open position made a "space"
on the paper. So the idle or "stop" state was "mark" and the "start" signal
(for the recorders) was "space". (The recorders shut off automatically on
"long mark").

Also, to interrupt someone who was sending (perhaps to send some priority
message like "Help! Robbers!"), you "broke" the line with your knife switch
(sent a <BREAK> or a "long space"). Because all the keys and clickers and
recorders were wired in series, the person who was sending would suddenly
be unable to hear his own "echo", so he (presumably) would stop and wait
for the "breaker" to send.

Note:	Timesharing systems that support half-duplex current-loop
	terminals (not "local copy", but true half-duplex with both
	keyboard and printer in series on the same pair of wires) have
	to expect everything they send to be "echoed" and have to use
	<BREAK> as the sole means of interrupting typeout. (They detect
	the <BREAK> by comparing what is sent out to the echo and assuming
	any difference is a <BREAK>. Thank goodness those are mostly gone!)

Anyway, the tradition lingered through 5-level teletypes (Model 19, etc.),
through 8-level ASCII tty's (Model 33/35/37) all of which used "current loop"
circuits. When the switch was made to "voltage" circuits (RS-232), in order
to allow current-loop to RS-232 level converters to work, RS-232 had to use
the same conventions. To add to the confusion, the CONTROL leads use the same
ONE == +V / ZERO == -V convention as the DATA leads, all right, but the control
leads don't have the concept of mark and space. So the idle condition for
control lines like RING and DTR is zero (or -V). Just backwards from data.

See John McNamara's "Technical Aspects of Data Communications" (DIGITAL Press)
for more amusing historical tidbits (like Strowger the undertaker and the
first dial telephone).

Rob Warnock

UUCP:	{ihnp4,ucbvax!amd70,hpda,harpo,sri-unix,allegra}!fortune!rpw3
DDD:	(415)595-8444
USPS:	Fortune Systems Corp, 101 Twin Dolphin Drive, Redwood City, CA 94065



More information about the Comp.unix mailing list