Code for Information Interchange– ASCII

At the onset of the computing era, computers were designed and built with particular applications in mind. For example, SEAC, the Standards Electronic Auto-matic Computer, described elsewhere in this volume, was built at NBS in the late 1940s principally to handle certain classes of mathematical problems. SEAC had a manual keyboard for direct input, a teletype printer for direct output and punched paper tape for indirect opera-tion. The idea of sharing the information from this computer with another computer was not one of the original concepts in the design. Very few computers were operational at the time, so such opportunities were greatly limited. Communication among humans was accomplished using the telephone, teletype, and type-writer, and these devices did not automatically lend themselves to machine-machine communication.

As computers became more common and areas of application increased, connecting computers to share the processing load or to share data became more important. SEAC and DYSEAC, for example, were connected at NBS in the 1950s. The electronic language of nearly all machines was, and continues to be, binary code, ones and zeros. Programmers encoded commands for the machines and data in binary code. Eventually higher level languages were developed so that com-mands were easier to write and debug. Alphabetic characters, numerals, and punctuation marks were needed to develop and use such higher-level languages. Each character had to be represented as some combina-tion of binary digits. The problem was that different computers used different combinations of ones and zeros to represent the basic characters. This meant that an ' a' on one machine might have the same representa-tion as an ' m' on another machine or, more commonly, a ' <' on one machine would be ' !' on another. A related problem occurred when one used computers to sort lists of alphanumeric data. In some code sets, letters preceded numerals, while in others the reverse was true. Since sorting algorithms treated the binary representa-tions like numbers, a list sorted on one computer could differ in order from the same list sorted on another. The only way that commands or data could move from one computer to another and be interpreted correctly would be for all parties to agree on what each combination of ones and zeros stood for. Work on such a code for information interchange started in 1961. By 1967 the " 7-bit coded character set" had evolved to include the letters of the alphabet, numbers and certain control characters required by the computers for a total of 128 characters. Obtaining a consensus on this standard was not simple because several sets of codes developed by large computer vendors were already in widespread use. Control Data, for example, used the 6-bit FIELDATA code, while IBM used the 8-bit EBCDIC. John L. Little, an NBS staff member from 1953 to 1987, held the positions of vice-chair and chair of X3.2.4, the national voluntary standards committee that developed the standard. X3.2.4 was chartered by the American Standards Association (ASA), which became the United States of America Standards Institute (USASI) in 1966, then the American National Standards Institute (ANSI) in 1969. Little worked for years to develop this standard. His strong, quiet, and deliberate way of working with members to obtain consensus was critical to the project's success. In 1968, USASI published the 7-bit American Standard Code for Information Interchange (ASCII).


Most modern developments in the computer field, such as the Internet, would not have been possible without this underlying [ASCII] code.


NBS was interested in these standards efforts in the late 1960s because of new legislative directions. On October 30, 1965, the Brooks Bill (P. L. 89-306) authorized the Department of Commerce:

" (1) to provide scientific and technological advisory services to other agencies with regard to ADP equipment and related systems;

(2) to make appropriate recommendations to the President concerning the establishment of uniform Federal automatic data processing standards; and

(3) to undertake research in computer science and technology as needed to fulfill the above responsibilities."

The Secretary of Commerce delegated the responsi-bility for implementing these provisions to the National Bureau of Standards. This legislative authority was augmented by Bureau of the Budget guidelines issued in December 1966 that divided NBS work into five programmatic areas: advisory and consulting services, development of voluntary commercial standards, recom-mendations for uniform Federal standards, research on computer sciences and techniques, and computer service activities. Thus, research began in 1965 in the Center for Computer Sciences and Technology that would support voluntary national and international standards, and where appropriate be recommended for other agency use.

In November 1968, NBS sealed the fate of ASCII by adopting it as its first Federal Information Processing Standard (FIPS). This standard, published as FIPS Pub 1, Code for Information Interchange [1], and issued under the signature of President Lyndon Johnson, speci-fied a code and character set for use in Federal informa-tion processing systems, communications systems, and associated equipment. The endorsement of the Federal government, then the largest purchaser of computer equipment, was probably the single most important reason for the subsequent wide adoption of ASCII. (Fig. 1)

In practice, the 7-bit ASCII code is often embedded in a comparable 8-bit code, where the leftmost bit is set to zero. This is convenient because most computers transfer information in units of 8 bits (a " byte" ). In some cases, the leftmost bit is used as a parity bit. In " even" parity, for example, the leftmost bit is set so that the number of 1 bits is always even. This allows for automatic 1-bit error detection, a useful feature when transmission lines are noisy.

ASCII might well be called the first computer inter-operability standard. Most modern developments in the computer field, such as the Internet, would not be possible without this underlying code. To this day, all data interchanges start and end as sets of ASCII charac-ters. When all else fails, systems still will accept " plain text files" which are coded in ASCII. ASCII has turned out to be an excellent code that has lasted for over 30 years, and has been fundamental to the development of the U. S. computer industry.

Prepared by Martha M. Gray.

Bibliography

[1] Code for Information Interchange, Federal Information Process-ing Standards Publication (FIPS Pub) 1, National Bureau of Standards, Washington, DC, November 1, 1968.

[2] Charles E. Mackenzie, Coded Character Sets: History and Devel-opment, Addison-Wesley Publishing Co., Reading, MA (1980).

[3] Brooks Bill Issue Study of the National Bureau of Standards, NBS Report 10 608, Center for Computer Sciences and Technology, National Bureau of Standards, Washington, DC, September 1971.

Fig. 1. The first letters of the alphabet with their ASCII equivalents, as given in FIPS PUB 1.