27

I never had a Commodore 64 but I've always been curious what the purpose and history of some of the special keys were. In particular:

  • C=
  • Run/Stop
  • Clr/Home
  • Restore

I'm mostly used to the standard ASCII keyboards from the era and whenever I had sat in front of a Commodore these keys didn't seem to do much. But to be fair, I believe the Run/Stop key would break listings and the C= + Shift key would possibly switch out the character set to allow for lowercase. But were there other uses? How come Run/Stop can break a program but not start it? What is the Restore key and why is it so big?

I think the same keyboard was used on the other Commodore machines, but memory isn't clear. Are the behaviors consistent?

  • To be fair, most software (all not written in BASIC, so "all") did remap the keyboard completely for its own purposes. So, which function was on a certain key depended on the program you were running. – Janka Jun 8 '17 at 3:34
  • You CAN use the RUN feature of the RUN/STOP key to load from disc. Type four spaces, "*",8(,1) shift return, shift cursor up, shift RUN. This will launch the 1st program on disc and run it. – Zenzizenzizenzic Jun 5 at 14:04
28

The Restore key triggered the NMI (non-maskable interrupt) line; to actually have an effect it had to be combined with Run/Stop - it would soft-reset the machine (via an indirect jump vector that could be overwritten to a custom routine if desired. This wouldn't reset memory, but would stop even misbehaving programs in most cases.)

Run/Stop was two keys; unshifted, it was Stop and would halt the current action (like listing a program or stop a running BASIC program). Pressing Shift + Run/Stop would be a shortcut for the LOAD command.

Clr/Home was similar. Unshifted, it moved the cursor to the upper-left corner of the screen. Shifted (Clr) it cleared the screen and moved the cursor to the upper-left. (If you were in an open quoted string, it would actually insert the control character for these things, so you could have a command in a program that would "print" the Clr character, and when you ran the program it would clear the screen.)

The C= key had a few uses. One, when combined with SHIFT would switch between uppercase/graphics and lower/uppercase characters. It was also an alternate SHIFT key to access additional characters on the keyboard. Lastly, C= plus the numbers 1-8 would allow choices of 8 additional text colors (Ctrl and 1-8 are the other 8 colors).

http://sta.c64.org/cbm64petkey.html

  • 3
    As an aside: I never used the Run part of Run/Stop on purpose. – Joe Jun 7 '17 at 1:45
  • 5
    Shift + Run/Stop executes a LOAD before the RUN. – kolrabi Jun 7 '17 at 11:21
  • 3
    @kolrabi RIGHT. But it was the tape-style LOAD without any drive specifier... – Joe Jun 7 '17 at 11:55
  • 5
    The Restore key gave an NMI immediately on pressing it. It was the default NMI handling function which checked if Run/Stop was pressed also - and abadoned the request if not. But programs may change that handler and the Restore behaviour, too. It wasn't used much, though, because NMIs have even higher priority than the raster IRQ many programs used to control the screen more decently, and pressing Restore lead to glitches because of that. – Janka Jun 8 '17 at 3:27
  • 4
    @Janka: Actually, VIC-20 and C64 Restore keys generated the NMI on release. The C128 seems to have changed the behavior, though. – supercat Feb 18 at 2:42
11

I believe the C64 keys were carried over from the VIC-20. The VIC-20 keys (somewhat at least) have some history from the PET series too.

Taken from Wikipedia on the VIC 20:

When they returned to California from that meeting, Tomczyk wrote a 30-page memo detailing recommendations for the new computer, and presented it to Tramiel. Recommendations included programmable function keys (inspired by competing Japanese computers), full-size typewriter-style keys, and built-in RS-232.

The keys you mentioned are mostly self-explaining. RUN/STOP would run or halt an application and was programmable in software. The fact that "RUN" rarely (if at all) started an application wasn't a limit of the key.

The C= key could be said to exist as mere corporate branding such as the "Apple" keys on the Apple II series. Useful as a META key or "special" key to allow specific combinations in software.

I have to admit, I'm not sure of the history of the Restore key.

Also, keep in mind, that before the VIC-20 the biggest success Commodore had in computers was the PET. The PET originally had terrible calculator keys that was quickly replaced by a real, full-travel keyboard. Commodore seemed to learn their lesson in bad keyboards as many of their computers after the original PET actually had pretty good keyboards. Even their cheaper models like the C16. Of course, there are exceptions.

Finally, Tamiel was legendary in using parts he had on hand. Which is one reason why the C64 inherited the VIC-20 keyboard. So he wasn't going to design a completely new keyboard for the C64.

11

I just want to add to the existing answers that the Restore key was a weird key. It was on hardware side already completely independent of all the other keys. It was attached to the NMI line of the processor, only proxied by a small circuit which let only rising flanks pass. This circuit sometimes ignored a simple slow press and reacted much more reliably on a series of such flanks in quick succession. Users could create these when hitting the key quite hard and fast and so letting the key bounce (that usage was typically rather loud and could have inspired the term "hacker" — just kidding).

The Stop key (which was Run when used with Shift, hence it was often mis-called Run Stop, but in fact a simple press on Stop stopped a running program if that didn't take care to avoid this behavior) was a key of the normal keyboard matrix. So the NMI routine jumped to by the Restore key did a check first whether the Stop key was being held and just returned otherwise. Since this behavior could be changed, hacking on the Restore key alone could create some special reaction in some special cases (in some games, for instance).

  • 2
    The PET definitely did not have the RESTORE key or a Commodore key for that matter. – JeremyP Jun 8 '17 at 8:51
  • 2
    I had a Vic20 (but not a C64) and I remember RunStop + Restore being a "reset" key combination behaving as described in these answers. So safe to say that Vic20 and C64 had the same behaviour. – Richard Downer Jun 9 '17 at 8:57
  • 2
    +1 for the first part about the Restore key. I used to have a C64 and I remember that weird behavior. It's nice to read an explanation for that after >30 years... – dr01 Jun 29 '17 at 15:22
  • 1
    The circuit behind it makes the key work only (mostly) if pressing the key mechanically is done so hard that a chatter is the electric result. The hardware of the keyboard isn't specially designed to create this, though. In my opinion, the whole setup is a hack. It works, but it stresses the hardware more than it was designed for. Feel free not to call it weird, but I think that word expresses what I feel about this quite fine. – Alfe Apr 11 at 8:35
  • 1
    There is a hack that disables Restore key. First you set up a timer that fires interrupt on NMI line in a few cycles, then you continue your program through NMI vector. The trick is not to acknowledge an interrupt to that timer so that NMI hangs at logic 0 forever and Restore is no more functional. – lvd Apr 22 at 16:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.