I've always wondered why the Commodore 64 had discrete keys dedicated for the ← and ↑ symbols.

If I remember correctly, they weren't used in BASIC at all, and were not very useful for drawing, either, since right and down arrows were not part of the keyboard symbols.

Why were they put on the keyboard in the first place?

  • 6
    Way back when BASIC and I were both teenagers, up-arrow was the exponentiation operator of choice, and of course available on the ASR 33 keyboard.
    – dave
    Feb 16, 2019 at 0:16
  • 1
    (As a tangentially-related Fun Fact, that same article I linked to in the previous comment also notes that the original 1984 Macintosh keyboard contained no cursor keys at all. This decision apparently came about by decree of Steve Jobs, because I guess what's the point of shipping this newfangled computer with a mouse as standard equipment if people aren't going to use it to position things on the screen?)
    – FeRD
    Feb 17, 2019 at 11:30
  • 2
    @FeRD The cursor keys are separate from what's being discussed in the question, the ← and ↑ aren't used for cursor movement. You are correct though that some Commodore 8-bits (PET, VIC-20, C=64) do include only two cursor keys, requiring a combination with the shift key to move in the other two directions.
    – mnem
    Feb 17, 2019 at 17:41
  • 1
    The BASIC in the C64 uses the up-arrow as the exponentiation operator. The back-arrow is a curious inclusion, though.
    – supercat
    Feb 18, 2019 at 2:40
  • 2
    @FeRD Its easy to forget how much in general keyboard layouts varied until things standardized around the IBM Model M layout and its various clones. Look at anything before '85-ish and placement and number of keys of anything other then the alphas and the numerics is all over the place from one manufacturer to the next.
    – mnem
    Feb 18, 2019 at 5:34

2 Answers 2


The ← and ↑ symbols were originally included in ASCII-1963 as programming operators. They were used in a number of programming languages at the time, but the only common usage left today is in Smalltalk where the _ and ^ characters which replaced them in ASCII-1967 can still be used for variable assignments and variable selectors, respectively.

The Commodore keyboards using this deprecated version of ASCII was already a bit of an anachronism at the time, but they weren't the only ones to do so. The TRS-80 also used this, as did the Xerox Alto.

  • The only common usage of _ and ^ is in Smalltalk? Or do I misunderstand something? ^ is used in practically every major programming language up to this minute.
    – Gábor
    Feb 15, 2019 at 23:14
  • 12
    @Gábor The point is that originally in Smalltalk one could write a ← b meaning "assign b to a". That, apparently, can still be written as a _ b.
    – Leo B.
    Feb 15, 2019 at 23:48
  • 1
    @Gábor I probably could have worded that better. I meant more still in common usage in their original contexts.
    – mnem
    Feb 16, 2019 at 4:20
  • 2
    For that matter, ← was allowable as the assignment operator in some Algol 60 compilers (not sure why since := was available; just taste?). The ICL 1900 #XALM compiler was one I used. Come to that, ← was the "invitation to type" (today we say "prompt") on ICL 1900 MOP terminals.
    – dave
    Feb 16, 2019 at 23:55
  • 2
    @LeoB. That usage survives today in the R statistical language, where the traditional assignment operator is <- (although = can also be used these days). In the absence of the original dedicated symbol, two characters are used, and handily at times can also be used in the opposite direction (i.e. a -> b means "assign a to b"). The history is given here (effectively R inherited this assignment operator from S which inherited it from APL, which had a dedicated arrow key available): colinfay.me/r-assignment Feb 17, 2019 at 6:16

The ← and ↑ symbols are remnants of an earlier version of ASCII.

ASCII1963 table with ↑ and ← at 5E and 5F

The ← and ↑ have now been replaced with _ and ^ respectively.

  • 2
    This makes me wonder if that's why ^ is used as the start of line anchor in regex.
    – John Pavek
    Feb 15, 2019 at 21:15
  • @JohnPavek It's the underscore which replaced the left arrow. I'll edit.
    – Leo B.
    Feb 15, 2019 at 21:25

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .