42

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?

Omar and Lorraine
  • 38,883
  • 14
  • 134
  • 274
Mavrik
  • 516
  • 4
  • 10
  • Much of what C= did was motivated by cost savings rather than technical considerations. So there's the possibility that the first keyboard that Commodore could find that met spec and was cheap enough might've had these symbols. After a while demand would reduce the cost of this particular design, so C= likely stuck with it – scruss Feb 15 '19 at 21:46
  • 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 '19 at 00:16
  • A throwaway note in Wikipedia's "Arrow keys" article claims, "Some Commodore 8-bit computers used two keys instead of four, with directions selected using the shift key." Which is something I had completely forgotten about, but now that I read that it suddenly sounds awfully familiar. My addled memory can neither confirm nor deny, but perhaps they were cursor-movement keys... or at least, had the ability to serve that function in some programs. – FeRD Feb 17 '19 at 11:25
  • 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 02:40
  • 1
    @mnem Wow, I had totally forgotten until I looked at the photo how messed up (by modern standards) that keyboard was! Yeesh, thanks. – FeRD Feb 18 '19 at 02:44
  • 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 05:34
  • @FerD The layout is weird, but sometimes useful for mnemonic purposes since the punctuation characters atop the numbers are exactly in ASCII order. (Older keyboard layouts are actually the reason they're in that order in the character set). So you have shift-2 for ", which sits between ! and # in ASCII, shift-7 for ', and shift-8 and -9 instead of 9 and 0 for the parentheses. – Mark Reed Aug 13 '23 at 12:56

2 Answers2

49

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.

Basil Bourque
  • 1,171
  • 2
  • 8
  • 7
mnem
  • 4,537
  • 2
  • 22
  • 36
  • 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
  • 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 '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 04: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 '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): https://colinfay.me/r-assignment/ – Michael MacAskill Feb 17 '19 at 06:16
  • @another-dave The colon-equals symbol existed as a codepoint is some encodings; where it was not, but there was a left arrow; it would make sense to use it instead, if one didn't want to bother parsing two characters. – Leo B. Feb 17 '19 at 06:24
  • Under some operating software, KDF9 used a character set where each Algol basic symbol was one byte (so, say, procedure is one symbol = 8 bits, as was the becomes-symbol) but the peripherals didn't have that capability, so lexical analysis was still needed on input. But on ICL 1900, the compiler accepted the standard colon-equals even though left-arrow was an alternative, so there was no saving on having to do the parsing. – dave Feb 17 '19 at 13:59
  • Was the left-arrow as it was for programming languages, or so that a teletype that mirrored characters 0x60-0x7F to 0x40-0x5F would render a rub-out as a back-arrow, which would indicate to anyone reading the printout that anything following should be shifted left? – supercat Dec 31 '19 at 00:29
24

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.

wizzwizz4
  • 18,543
  • 10
  • 78
  • 144
Leo B.
  • 19,082
  • 5
  • 49
  • 141