history - Why did early ASCII have ← and ↑ but not ↓ or →? - Retrocomputing Stack Exchange
The 2026 Annual Developer Survey is live—
take the Survey today!.
Stack Internal
Knowledge at work
Bring the best of human thought and AI automation together at your work.
Explore Stack Internal
Why did early ASCII have ← and ↑ but not ↓ or →?
Ask Question
Asked<br>1 year, 9 months ago
Modified<br>1 year, 9 months ago
Viewed<br>5k times
38
It is widely known and reported that the 1963 definition of ASCII had ↑ and ← at positions 0x5E and 0x5F. Soon after these were changed to ^ and _ and so they remain.
The first terminal I ever used was a Teletype model 33:
The shift-N and shift-O did indeed print ↑ and ←, as advertised on the keycaps, and I have been puzzled by the absence of ↓ and → for almost fifty years.
Why were ↑ and ← in ASCII to begin with? Whose idea was it to put in ↑ and ← but not ↓ or →, and what was those characters' intended use?
Update : The elimination of ↑ and ← appears to have been very early, pre-ASCII. The April 1965 "Proposed Revised American Standard Code for Information Exchange" (Comm. ACM) reports that the ISO 646 committee, working in parallel with the ANSI X3.4 committee, had replaced ↑ and ← with ^ and backtick (not underscore) as early as December 1963. (See figure 2 on p.212.) The history here is very convoluted and I would appreciate a clear explanation from someone who understands how the various threads relate. So the main question is still:
How and why ↑ and ← were in the 1963 definition to begin with.
history<br>terminal<br>ascii<br>standards
Share
Improve this question
Follow
edited Sep 12, 2024 at 20:58
Raffzahn
254k2323 gold badges741741 silver badges1.1k1.1k bronze badges
asked Sep 12, 2024 at 17:42
Mark Dominus
43344 silver badges99 bronze badges
This question is similar to: Why did the C64 have ← and ↑ as dedicated keys?. If you believe it’s different, please edit the question, make it clear how it’s different and/or how the answers on that question are not helpful for your problem.
mnem
mnem
2024-09-12 17:59:23 +00:00
Commented<br>Sep 12, 2024 at 17:59
I did read that question before I posted. It is clearly different. The answer to the C64 question is “because they were following ASCII”. My question is why was ASCII that way to begin with.
Mark Dominus
Mark Dominus
2024-09-12 18:20:31 +00:00
Commented<br>Sep 12, 2024 at 18:20
Not for nothing but my answer on that question does include the why "The ← and ↑ symbols were originally included in ASCII-1963 as programming operators ", or at least the only "why" I could find evidence of at the time I wrote it.
mnem
mnem
2024-09-12 19:47:35 +00:00
Commented<br>Sep 12, 2024 at 19:47
I don't really see that having an up-arrow really leads to an expectation of a down-arrow.
dave
dave
2024-09-13 02:52:55 +00:00
Commented<br>Sep 13, 2024 at 2:52
Add a comment
1 Answer 1
Sorted by:
Reset to default
Highest score (default)
Date modified (newest first)
Date created (oldest first)
44
It's All In The 1963 Proposal
Note that those early versions (i.e., all before 1968) were proposals for the upcoming standard (*1) - not prior standard or preliminary versions. The earliest form only defined codes from x'00' to x'5F'. The intention was for
x'5E' as exponential mark - as in 5x10↑8 - while
x'5F' is described as 'Implies/Replaced By': what one today would call an assignment (*2).
Thus, neither is an arrow in itself, but a dedicated mathematical symbol like ''.
This usage is nicely described in section 4 on p.5 and p.6 of the 1963 proposal:
(Images of the pages taken from this fine site)
Changing ↑ to ^ added a diacritical mark (used with BS), using that new character for exponential notation was still a meaningful read - so good that we still use it: 5x10^8.
A similar thing happened with ←. While exponential is still something used very often, a special assignment was only picked up by APL. By dropping this very specific character the position was free to be used for another 'mark' - here underscore which allowed (again with BS - or CR) underlining of text.
*1 - And a lengthy process it was: more than 5 years until a final standard was agreed on. All in a world moving extremely fast. Even faster than micros evolved in the early 1980s. That's why many manufacturers implemented intermediate proposals in their new products... or had to use other solutions. Which is what IBM did. The /360 was originally intended to use all-out ASCII, but it not being finished, they came up with EBCDIC as an intermediate solution. Early /360 hardware was even switchable to use ASCII instead (for BCD/printable conversion), as they tried until the very last moment to keep that door open. Once EBCDIC was out in the wild (1965), no customer wanted to change all their data, so EBCDIC it was. The machine bit to switch for ASCII was in turn dropped in the mid 1970s.
*2 - While most languages settled for using = or := as assignment...