That Powerful ESCAPE Character --
Key and Sequences

Computer History Vignettes

By Bob Bemer

The Birth of ASA Committee X3

On 1960 Jan 13 the American Standards Association convened an organizational meeting in New York City to discuss and approve the formation of Committee X3, Computers and Information Processing. The Scope and Program of Work, which I drafted at the behest of IBM VPs Birkenstock and McPherson, was accepted with a major component as:

"[to develop] a single standard for logical representation of characters and character format in the media used for interchange of instruction, data, and control information between data processing equipments, together with orderly provision for expansion and alternatives."

  Ref. Annals of the History of Computing 9, No. 3/4, p.346 (1988)

Note that last clause - "together with orderly provision for expansion and alternatives". To attendees who did not understand at the time, I outlined the possible action of the Escape character, were it to be included as one of the characters in the basic set, and thus as manipulable as any graphic. They must have been somewhat convinced. We see the "expansion" in today's 8-bit and 16-bit sets, and the "alternatives" in the various national and other sets, especially in laser printers.

But also note that only "interchange" was covered. Had I gone for the internal code itself, all manufacturers would have rebelled. But I knew that reducing the internal-to-external conversion to zero would be tempting. Especially if there were a set content mismatch.

In any event, there was precedent.

First Appearances of "Escape"

In 1956 September it was decided that IBM's Stretch computer would have a 64-bit word, each character represented by 8 bits. I was there at Los Alamos when this was decided, and it made me very happy. I used to say at the time that "powers of 2 are magic". It was to prepare for the acceptance of 8-bit characters that I published [1].

The Stretch character set [2,6] was designed by Dr. Werner Buchholz (creator of the term "byte") and myself. I put in the escape character as a set member, but a Stretch code for that did not appear in the 1960 survey [4] of internal computer character codes because the set was already frozen.

The only surveyed code to include ESC was a proposal by H. MacGregor Ross (of UNICODE fame) on Ferranti's behalf for the British Standards Institution. This followed on my presentation to the same body in February of 1960.

Page 3 of Reference [2] did contain this verbiage about ESC:

"4. Expansion of Set

Future expansion to a set larger than 120 may take place in two ways. One is to assign additional characters to presently unassigned 8-bit codes; allowance should be made for certain control codes which will be needed for communication and other devices and which are intended to occupy the high end of the code sequence. The second method is to define a shift character to "escape" to another character set. Thus, whenever the shift character is encountered, the next character (or group of characters) identifies a new character set, and subsequent codes are interpreted as belonging to that set. Another shift character in that set can be used to shift to a third set, which may again be the first set or a different set. Such additional sets would be defined only if and when there arise applications which require them.

ESC was certainly in the IBM proposal of 1961 May [5], for which Herb Bright said to forget the X3.2 committee and adopt this one!

But X3 did accept the escape concept from the beginning. ESC was in position 7/14 in the code that X3 showed to the Department of Defense in 1961 June. It never left the ASCII work, although it was moved to 1/11 in 1964 May, and stayed there ever since.

Moreover, my short article describing "escape" appeared in the next month's issue of the Communications of the ACM [3]. Publication always gives cachet. I learned that once in attending a decision meeting within IBM, where I seemed to be losing the argument. In disgust, I left and sent in Roy Goldfinger in my place. He, clever fellow, swung the decision to my viewpoint by quoting an article I had written and published! What I could not accomplish in person I could accomplish by having published it! Strange.

How Can One Recognize an Escape Sequence?

It will be useful, before going on, to admit a world of confusion.

Answer:

  1. When it is started by the ESC character itself (customarily just for hardware), or
  2. When, at a level above hardware, it is started by a character other than ESC that it is felt that a superimposed system will not need. And ended by convention or another similar character.
An example of the latter is the "\" as used by C and such. Ever see "\t" in text cause a Horizontal Tab movement? I haven't. The reason is that it may be descriptive, as in general text, or announcing, as it is in source programs for the compiler for the programming language C and its offshoots. C could just as well have used "|announce|t", but the backslash fascinated with its brevity, preceding Microsoft's using it for their file hierarchy indicator.

HTML is a programming language, too, and it has four different forms of escape sequence. One is where "<" is the announcer. But what it announces is closed off by ">" -- a far better and more general method than that of C. Oddly, the HTML people refer to only one of those forms as an escape sequence -- not this one.

If you'd like to see escape sequences used properly, look at Internet design paper "rfc1554", which discusses extensions of Japanese character sets via ISO 2022 [8].

How to Get to the Real Escape Character

Once in the early days of video terminals, e.g. DEC VT52, the ESC key actually emitted the ASCII ESC. And if you followed that by a capital A the cursor would be seen to move one position to the right. This was direct generation, unbuffered.

All that changed with the IBM PC. For excellent and sufficient reasons, its keys emitted not the character itself but a "scan code", which was then remapped to the hardware level, just as a compiler would. A pretty good technical explanation of all this has been made by Randall Hyde. See it for the nitty gritty understanding.

Now any compiler or application software just grabs the scan code from the ESC key and tailors the action to what it wants. Nothing wrong with that.

If you or your software kit have a way to enter the ESC character directly, as I have, some wonderful things can be done. I have a file of all of the original 64 combinations of 8 colors (x 2 for "bright" aspect) that I view in transparent mode (all the control characters show but don't function). From this I can cut the text for a specific foreground-background choice, paste it into my file, and return to regular mode. It's fun to show people how to cut and paste colors. Fortunately these 128 combinations still function even though we now have a much wider color spectrum evocable via the HTML codes.

Proof of Early Skepticism

It must be admitted that acceptance of the "escape" principle was hard-earned, which may surprise the millions of people who use billions of them every day.

From a letter from Herbert S. Bright to Charles W. Bachman, 1982 March 11, on the occasion of the second of my three nominations for the ACM's Turing Award (all of which failed!):

"Bob ... was a principal creator of the ASCII set. I well remember nailing Bob once for an explanation of the 'Escape Character' concept, which was new to me when Bob pushed it through his group. He convinced me that no set of any length would meet all requirements even then, certainly not in the future, and that the Escape concept would work. His Subcommittee, competitor's employees all, grudgingly agreed. After some months of study, they became the strongest boosters of the idea. Meanwhile, Bob's employer -- a large corporation -- seemed somewhat less than enthusiastic, if not downright reluctant, toward the whole ASCII set. It is a matter of public record that he changed employers about then.

   (See the story of my departure from IBM).

The question has bugged me ever since; Is this an example of a solid company man placing his conviction about a public need above his well- developed instinct for bureaucratic self-preservation? There aren't too many in this business, who, like you, seemed to have displayed that bizarre character trait.

Having first raised, in Council, the idea of establishing a Turing Award, I have felt a fatherly concern about each selection.

I would feel comfortable if the award for this year goes to irritating, competent Bemer for the idea that will live after him."

I will admit to the "irritating". The energy I had then astounded even me, and I was indeed young enough to be impatient with people that could not see the benefit of many of my ideas.

Other Bows via the Turing Award

From Turing Award Recommendations in 1996 (my third nomination):

Eric Clamons (longtime chairman of the ASCII Committee):

"Bob's contributions ... one that affected the industry more profoundly than any other: the proposal to include the ESCAPE character in ASCII ... To a large extent the ESCAPE code made ASCII what it is ... The ESCAPE code also opened the way toward 'data streaming', an idea that made possible the widely-used softcopy control standard ..."
John Auwaerter (Chairman of X3):

"The impasse was broken by Mr. Bemer's "escape" code and registration of alternative meanings. ..."

Walter Carlson (ex-President of ACM):

"His idea ... was to use an "escape sequence", whereby each natural language had its own registered escape seqence code and associated set ..."

Auwaerter indicates that without the escape character and its functionality it may have been impossible to agree on and accept ASCII as a national and then worldwide standard. Surely the lack of a worldwide interchange alphabet would have inhibited development of the Internet and the Web!

IS THE ESCAPE SEQUENCE THAT IMPORTANT?

Care to speculate upon what the world would be like now if:

The following list is illustrative but incomplete. Its purpose is to show how different the world would have been without ESCAPE! Think of your own input to the list.

Here are some things one would miss:





REFERENCES

  1. R.W.Bemer, "A proposal for a generalized card code of 256 characters",
    Commun. ACM 2, No. 9, 19-23, 1959 Sep
  2. R.W.Bemer, W.Buchholz, "An extended character set standard",
    IBM Tech. Pub. TR00.18000.705, 1960 Jan, rev. TR00.721, 1960 Jun
  3. R.W.Bemer, "ESCape - a proposal for character code compatibility",
    Commun. ACM 3, No. 2, 71-72 (1960 Feb)
  4. R.W.Bemer, F.A.Williams, "Survey of coded character representation",
    Commun. ACM 3, No. 12, 639-641, 1960 Dec
  5. R.W.Bemer, H.J.Smith, Jr., F.A.Williams,
    "Design of an improved transmission/data processing code",
    Commun. ACM 4, No. 5, 212-217, 225, 1961 May
  6. R.W.Bemer, W.Buchholz, "Character set",
    Chapter 6 in Planning a Computer System, McGraw-Hill, 1962
  7. R.W.Bemer, "The American standard code for information interchange",
    Datamation 9, No. 8, 32-36, 1963 Aug, and ibid 9, No. 9, 39-44, 1963 Sep
  8. [ISO2022], International Organization for Standardization (ISO),
    "Information Processing -- ISO 7-bit and 8-bit coded characters sets --
    Code extension techniques", ISO 2022-1986.
Back to History Index            Back to Home Page

Revision 1 -- 2003 Oct 25