[GreenKeys] Original meaning of ASCII codes (fwd)

From: John Lawson <jpl15_at_panix.com>
Date: Sun Nov 17 12:14:01 2002

  Of possible interest to the List...


------------ Tear along dotted line ----------------------

From: jones_at_pyrite.cs.uiowa.edu (Douglas W. Jones)
Newsgroups: alt.folklore.computers
Subject: Re: ASCII control codes
Date: 31 Aug 1995 19:37:58 GMT

 From article <4239uk$ko1_at_metro.ucc.su.OZ.AU>,
by adrianw_at_cassius (Adrian Whichello):

> Some are obviously still used for their original purpose (CR, LF, the
> tabbing codes etc.) but what did ENQ, EM, SUB, FS, etc. do? Thanks,

  - - - here's a reply I posted a year ago in June - - -

  Subject: Re: original uses of ASCII control codes
  Newsgroups: alt.folklore.computers
  References: <1994Jun02.064649.131411_at_ua1ix.ua.edu>

To understand the original intent of the ASCII control codes, you have
to think of teletypes, using paper tape, configured in a multidrop
system with relay logic used to turn on or off individual teletypes in
the bunch, and you have to remember that the designers were pretty
smart and they anticipated future developments, but they also managed
to include provisions for things that never happened. Here are the
ASCII control characters, and a few others, with comments on how they
were supposed to be used and how this relates to current popular uses:

   NAME HEX/CTL USE

   NULL 00 ^_at_ always ignored -- leader and trailer on paper tape
                systems was typically made of sequences of NULLs.

   SOH 01 ^A start of heading -- imagine a heading containing, for
                example, the address of the recipient. You could have
                relay logic that scans for SOH, then enables the print
                mechanism if the following character matches this
                station's address. In early documentation, this was
                called start of message.

   STX 02 ^B start of text -- if the heading matched, start printing
                with the following character. In early documentation,
                this was called end of address.

   ETX 03 ^C end of text -- now is a good time to stop printing.
                Your message might continue after this with a checksum
                or other administrative stuff. In early documentation,
                this was called end of message. The common use of
                control C as a kill character stems from this -- it
                indicates the end of your text addressed to some
                application.

   EOT 04 ^D end of transmission -- relay logic could decode this
                and, if there is a tape in the tape reader, it could
                begin transmitting its own message.

   ENQ 05 ^E enquire -- on receiving this, local relay logic would
                generate a response. In early documentation, this was
                called WRU or who are you. Teletypes had programmable
                response sequences that were encoded on a music box
                mechanism, and it was up to the customer to break
                plastic fingers off the drum to code how it responded
                to an ENQ.

   ACK 06 ^F acknowledge -- one possible response to ENQ. In early
                documentation, this was called RU or are you.

   BEL 07 ^G bell -- ring the bell in the terminal. Teletypes had
                real bells where most modern terminals have beepers of
                some kind. A sequence of BEL characters sent to a
                teletype sounded very much like a telephone ringing.

   BS 08 ^H backspace.

   HT 09 ^I horizontal tab.

   LF 0A ^J linefeed.

   VT 0B ^K vertical tab.

   FF 0C ^L formfeed -- page eject.

   CR 0D ^M carrage return -- on many mechanical devices, CR was
                slow. The sequence CR LF was always sent in that order
                so that the linefeed could be handled while the carriage
                was returning; a well adjusted Teletype could just finish
                the CR in this time (0.2 seconds), and a common sign that
                it was time to call the service man was that the first
                letter printed after a CR LF was printed "on the fly" on
                the way back to the margin.

   SO 0E ^N shift out -- if you've got a two-color ribbon, shift to
                the alternate color, usually red. There are obvious
                extensions of this to alternate character sets.

   SI 0F ^O shift in -- undo whatever SO does. For mysterious reasons
                that have no apparent connection to old or modern ASCII
                standards, DEC liked to use control O as a break character
                to suppress teletype output.

   DLE 10 ^P data link escape -- an escape character is generally a
                prefix for something else. DLE was expected to be used
                as a prefix on characters in the user data stream that
                might otherwise be interpreted as data link control
                characters, for example, flow control characters. In
                some early documentation, this was called DC0 or device
                control zero.

   DC1 11 ^Q device control 1 -- turn on the paper tape reader.
                In early documentation, this was called XON.

   DC2 12 ^R device control 2 -- turn on the paper tape punch.

   DC3 13 ^S device control 3 -- turn off the paper tape reader.
                In early documentation, this was called XOFF, The use
                of XON/XOFF (DC1/DC3) for flow control stems from their
                use to control the flow of data from the paper tape
                reader attached to a Teletype.

   DC4 14 ^T device control 4 -- turn off the paper tape punch.

   NAK 15 ^U negative acknowledge -- another possible response to ENQ.
                One flow control mechanism is to use ENQ to ask if the
                receiver has buffer space, and require the receiver to
                respond with either ACK (yes) or NAK (no). ENQ could
                also be used to enquire about whether a retransmission
                is required after sending a checksum. The popular use of
                control U to delete the current input line is only vaguely
                grounded in this definition.

   SYN 16 ^V synchronous idle -- if you're using a synchronous
                transmission protocol, and you have no data to send, you
                send SYN characters to keep the clocks synchronized.
                The receiver should ignore these, and the transmitter may
                have to insert them into the data stream once in a while.

   ETB 17 ^W end of transmission block -- used when a transmission must
                be broken into many blocks for some reason, for example,
                to place a checksum after each block. Early documentation
                called this logical end of media.

   CAN 18 ^X cancel -- take that back, what I just sent you is a
                mistake, ignore it.

   EM 19 ^Y end of medium -- there's nothing left on this reel of
                (paper) tape.

   SUB 1A ^Z substitute -- the next character is from an alternate
                character set. SUB X might be equivalent to SO X SI,
                or it might be an alternate mechanism for extending the
                character set. The common use of control Z as an end
                of file character has no obvious relation to the standard.

   ESC 1B ^[ escape -- the next character is to be interpreted as
                something other than text, for example, it might be an
                extended control character of some kind.

   FS 1C ^\ file separator -- useful if you have multiple logical
                files in one transmission.

   GS 1D ^] group separator -- useful if files are made of groups
                of records.

   RS 1E ^^ record separator -- COBOL anyone?

   US 1F ^_ unit separator -- are records made of units?

   ALT 7D } Some early teletypes had an ALT MODE key that generated
                this code instead of ESC. This was interpreted as an
                escape code, which was no problem when nobody had lower
                case printers, but with the advent of full 96 character
                ASCII, there were obvious compatability problems.

   PRE 7E ~ A few terminals had a PREFIX key that generated this code
                instead of ALT MODE, with all the same problems.

   DEL 7F delete -- remember, paper tape uses a hole to record each
                one and no hole to record each zero. DEL is all holes,
                so it can be punched over any other character to rub it
                out (on old teletypes, it was the RUB or RUB OUT key).
                If you mispunch a character, just back up the tape and
                overpunch it with a DEL. Software is expected to ignore
                DEL the same way it ignores NULL.

-------------------------------------------------------------------

_______________________________________________
GreenKeys mailing list
GreenKeys_at_mailman.qth.net
http://mailman.qth.net/mailman/listinfo/greenkeys
Received on Sun Nov 17 2002 - 12:14:01 GMT

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:35:27 BST