I've always wondered why the Commmodore 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?

  • 4
    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. – another-dave Feb 16 '19 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 '19 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 '19 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 '19 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 '19 at 5:34

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.

| improve this answer | |
  • 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 '19 at 23:14
  • 9
    @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 '19 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 '19 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. – another-dave Feb 16 '19 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 – Michael MacAskill Feb 17 '19 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.

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

Your Answer

