Hallvard B Furuseth said:
The traditional IBM printers used a train or chain of characters.
More specifically, two common kinds of printers were "band" and
"chain" printers. A chain printer is pretty easy to imagine (and
a band printer is pretty much the same thing, using a sort of
rubber-band or metal band instead of interlocking chain pieces).
The chain is just long enough to string completely around the
cogs at the two ends:
[view from above]
_____________________
/| |\
|-o- -o-|
\|___________________|/
[paper goes here]
Behind the chain there are a bunch of tiny hammers, one for each
column that can print a character. The chain goes around and around
in a big loop, and whenever a character on the chain is ready to
print in that position on the paper, the hammer fires, pushing the
chain-link against the paper (with an ink ribbon in between of
course). Once all the characters on a given line have been printed,
the paper is fed up one line, and the next line can be printed.
The operators would get quite mad at you if you told the machine
to print out lines of text that exactly matched the chain sequence.
The reason is that this meant that the chain would rotate around
until *every character was in place simultaneously*, and then ALL
the hammers would fire at once. This could (and often would) break
the chain, sending printer bits flying. (Presumably some chain
printers incorporated logic to slow down such output, thus not
wrecking the machinery.)
In any case, the chains were replaceable, and some print jobs would
require different "print trains" or "print chains". The printer
had to be told which sequence was loaded, and which characters were
physically available.
[In EBCDIC,]
LF is linefeed, and NL is newline. The ASCII LF character is commonly used
as the C '\n' character, as ASCII doesn't have a newline character. But
EBCDIC does!
Actually, ASCII code X'0A' (in EBCDIC-ese), 10 decimal, is *both*
linefeed *and* newline. Which you get depends on which ASCII you
are using. Thus, if you are going to have a newline at all, this
is the correct choice (but then you have no separate linefeed,
unlike EBCDIC).