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