0% found this document useful (0 votes)
14 views5 pages

Understanding ASCII: Definition & History

ASCII is a character encoding scheme that represents text in digital form. It contains 128 specified characters including numbers, letters, punctuation and control codes. Originally based on telegraph codes, ASCII became the most common encoding on the early internet until it was surpassed by more complex encodings like UTF-8 that support additional characters. The document details the history and development of ASCII and how control codes were interpreted differently across operating systems, leading to issues transferring plain text files.

Uploaded by

Frank Martin
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views5 pages

Understanding ASCII: Definition & History

ASCII is a character encoding scheme that represents text in digital form. It contains 128 specified characters including numbers, letters, punctuation and control codes. Originally based on telegraph codes, ASCII became the most common encoding on the early internet until it was surpassed by more complex encodings like UTF-8 that support additional characters. The document details the history and development of ASCII and how control codes were interpreted differently across operating systems, leading to issues transferring plain text files.

Uploaded by

Frank Martin
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

ASCII

ASCII ( i/ˈæski/ ASS-kee), abbreviated from American Standard Code


for Information Interchange,[1] is a character-encoding
scheme (the IANA prefers the name US-ASCII[2]). ASCII codes represent
text in computers, communications equipment, and other devices that
use text. Most modern character-encoding schemes are based on
ASCII, though they support many additional characters. ASCII was the
most common character encoding on the World Wide Web until
December 2007, when it was surpassed by UTF-8, which includes ASCII
as a subset.[3][4][5]
ASCII developed from telegraphic codes. Its first commercial use was as
a seven-bit teleprintercode promoted by Bell data services. Work on the
ASCII standard began on October 6, 1960, with the first meeting of
the American Standards Association's (ASA) X3.2 subcommittee. The
first edition of the standard was published during 1963,[6][7] a major
revision during 1967,[8][9] and the most recent update during 1986.
[10]
 Compared to earlier telegraph codes, the proposed Bell code and
ASCII were both ordered for more convenient sorting (i.e.,
alphabetization) of lists, and added features for devices other than
teleprinters.
Originally based on the English alphabet, ASCII encodes 128
specified characters into seven-bit binary integers as shown by the
ASCII chart on the right.[11] The characters encoded are numbers 0 to 9,
lowercase letters a to z, uppercase letters A to Z, basic punctuation
symbols, control codes that originated with Teletype machines, and
aspace. For example, lowercase j would become binary 1101010
and decimal 106. ASCII includes definitions for 128 characters: 33 are
non-printing control characters (many now obsolete)[12] that affect how
text and space are processed[13] and 95 printable characters, including
the space (which is considered an invisible graphic[14][15]:223).

ASCII control characters[edit]


Main article: Control character
ASCII reserves the first 32 codes (numbers 0–31 decimal) for control
characters: codes originally intended not to represent printable
information, but rather to control devices (such as printers) that make
use of ASCII, or to provide meta-information about data streams such as
those stored on magnetic tape.
For example, character 10 represents the "line feed" function (which
causes a printer to advance its paper), and character 8 represents
"backspace". RFC 2822 refers to control characters that do not include
carriage return, line feed or white space as non-whitespace control
characters.[26] Except for the control characters that prescribe elementary
line-oriented formatting, ASCII does not define any mechanism for
describing the structure or appearance of text within a document. Other
schemes, such as markup languages, address page and document
layout and formatting.
The original ASCII standard used only short descriptive phrases for each
control character. The ambiguity this caused was sometimes intentional,
for example where a character would be used slightly differently on a
terminal link than on a data stream, and sometimes accidental, for
example with the meaning of "delete".
Probably the most influential single device on the interpretation of these
characters was the Teletype Model 33 ASR, which was a printing
terminal with an available paper tape reader/punch option. Paper tape
was a very popular medium for long-term program storage until the
1980s, less costly and in some ways less fragile than magnetic tape. In
particular, the Teletype Model 33 machine assignments for codes 17
(Control-Q, DC1, also known as XON), 19 (Control-S, DC3, also known
as XOFF), and 127 (Delete) became de facto standards. The Model 33
was also notable for taking the description of Control-G (BEL, meaning
audibly alert the operator) literally as the unit contained an actual bell
which it rang when it received a BEL character. Because the keytop for
the O key also showed a left-arrow symbol (from ASCII-1963, which had
this character instead of underscore), a noncompliant use of code 15
(Control-O, Shift In) interpreted as "delete previous character" was also
adopted by many early timesharing systems but eventually became
neglected.
When a Teletype 33 ASR equipped with the automatic paper tape
reader received a Control-S (XOFF, an abbreviation for transmit off), it
caused the tape reader to stop; receiving Control-Q (XON, "transmit on")
caused the tape reader to resume. This technique became adopted by
several early computer operating systems as a "handshaking" signal
warning a sender to stop transmission because of impending overflow; it
persists to this day in many systems as a manual output control
technique. On some systems Control-S retains its meaning but Control-
Q is replaced by a second Control-S to resume output. The 33 ASR also
could be configured to employ Control-R (DC2) and Control-T (DC4) to
start and stop the tape punch; on some units equipped with this function,
the corresponding control character lettering on the keycap above the
letter was TAPE and TAPE respectively.[27]
Code 127 is officially named "delete" but the Teletype label was "rubout".
Since the original standard did not give detailed interpretation for most
control codes, interpretations of this code varied. The original Teletype
meaning, and the intent of the standard, was to make it an ignored
character, the same as NUL (all zeroes). This was useful specifically for
paper tape, because punching the all-ones bit pattern on top of an
existing mark would obliterate it.[28] Tapes designed to be "hand edited"
could even be produced with spaces of extra NULs (blank tape) so that a
block of characters could be "rubbed out" and then replacements put into
the empty space.
Some software assigned special meanings to ASCII characters sent to
the software from the terminal. Operating systems from Digital
Equipment Corporation, for example, interpreted DEL as an input
character as meaning "remove previously-typed input character",[29]
[30]
 and this interpretation also became common in Unix systems. Most
other systems used BS for that meaning and used DEL to mean
"remove the character at the cursor".[citation needed] That latter interpretation
is the most common now.[citation needed]
Many more of the control codes have been given meanings quite
different from their original ones. The "escape" character (ESC, code
27), for example, was intended originally to allow sending other control
characters as literals instead of invoking their meaning. This is the same
meaning of "escape" encountered in URL encodings, C
language strings, and other systems where certain characters have a
reserved meaning. Over time this meaning has been co-opted and has
eventually been changed. In modern use, an ESC sent to the terminal
usually indicates the start of a command sequence, usually in the form of
a so-called "ANSI escape code" (or, more properly, a "Control Sequence
Introducer") beginning with ESC followed by a "[" (left-bracket) character.
An ESC sent from the terminal is most often used as an out-of-
band character used to terminate an operation, as in
the TECO and vi text editors. In graphical user interface (GUI)
andwindowing systems, ESC generally causes an application to abort its
current operation or to exit (terminate) altogether.
The inherent ambiguity of many control characters, combined with their
historical usage, created problems when transferring "plain text" files
between systems. The best example of this is the newline problem on
various operating systems. Teletype machines required that a line of text
be terminated with both "Carriage Return" (which moves the printhead to
the beginning of the line) and "Line Feed" (which advances the paper
one line without moving the printhead). The name "Carriage Return"
comes from the fact that on a manual typewriter the carriage holding the
paper moved while the position where the typebars struck the ribbon
remained stationary. The entire carriage had to be pushed (returned) to
the right in order to position the left margin of the paper for the next line.
DEC operating systems (OS/8, RT-11, RSX-11, RSTS, TOPS-10, etc.)
used both characters to mark the end of a line so that the console device
(originallyTeletype machines) would work. By the time so-called "glass
TTYs" (later called CRTs or terminals) came along, the convention was
so well established that backward compatibility necessitated continuing
the convention. When Gary Kildall cloned RT-11 to create CP/M he
followed established DEC convention. Until the introduction of PC
DOS in 1981, IBM had no hand in this because their 1970s operating
systems used EBCDIC instead of ASCII and they were oriented toward
punch-card input and line printer output on which the concept of carriage
return was meaningless. IBM's PC DOS (also marketed as MS-DOS by
Microsoft) inherited the convention by virtue of being a clone of CP/M,
and Windows inherited it from MS-DOS.
Unfortunately, requiring two characters to mark the end of a line
introduces unnecessary complexity and questions as to how to interpret
each character when encountered alone. To simplify matters plain
text data streams, including files, on Multics[31] used line feed (LF) alone
as a line terminator. Unix and Unix-likesystems, and Amiga systems,
adopted this convention from Multics. The original Macintosh OS, Apple
DOS, and ProDOS, on the other hand, used carriage return (CR) alone
as a line terminator; however, since Apple replaced these operating
systems with the Unix-based OS X operating system, they now use line
feed (LF) as well.
Computers attached to the ARPANET included machines running
operating systems such as TOPS-10 and TENEX using CR-LF line
endings, machines running operating systems such as Multics using LF
line endings, and machines running operating systems such
as OS/360 that represented lines as a character count followed by the
characters of the line and that used EBCDIC rather than ASCII.
The Telnet protocol defined an ASCII "Network Virtual Terminal" (NVT),
so that connections between hosts with different line-ending conventions
and character sets could be supported by transmitting a standard text
format over the network. Telnet used ASCII along with CR-LF line
endings, and software using other conventions would translate between
the local conventions and the NVT.[32] The File Transfer Protocol adopted
the Telnet protocol, including use of the Network Virtual Terminal, for
use when transmitting commands and transferring data in the default
ASCII mode.[33][34] This adds complexity to implementations of those
protocols, and to other network protocols, such as those used for E-mail
and the World Wide Web, on systems not using the NVT's CR-LF line-
ending convention.[35][36]
Older operating systems such as TOPS-10, along with CP/M, tracked file
length only in units of disk blocks and used Control-Z (SUB) to mark the
end of the actual text in the file. For this reason, EOF, or end-of-file, was
used colloquially and conventionally as a three-letter acronym for
Control-Z instead of SUBstitute. The end-of-text code (ETX), also known
as Control-C, was inappropriate for a variety of reasons, while using Z as
the control code to end a file is analogous to it ending the alphabet and
serves as a very convenient mnemonic aid. A historically common and
still prevalent convention uses the ETX code convention to interrupt and
halt a program via an input data stream, usually from a keyboard.
In C library and Unix conventions, the null character is used to terminate
text strings; such null-terminated strings can be known in abbreviation as
ASCIZ or ASCIIZ, where here Z stands for "zero".

You might also like