29

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
32

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
  • 5
    @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
14

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
  • 3
    +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
13

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.

2

In order not to trigger the NMI with every contact bounce when hitting the Restore Key, there is a simple RC filter. The timing constant is marginal for the purpose, though. This is why the key has to be tapped and not just pressed down like any other. Back in the day there were some tutorials on which parts to exchange to make it behave normally. As to why Commodore never changed the parts themselves, several stories made the rounds. Some of the people involved liked the behaviour, or others in the chain were too lazy to get the changes into production.

  • 1
    Welcome to Retrocomputing Stack Exchange! Please read the tour and How to Answer. It'd be good if you edited your answer to state that the Restore key triggered a NMI at the beginning, and explain what that is; that'd make it more complete. ☺ – wizzwizz4 Jul 28 at 19:10
1

There are very good answers describing the functions of C64's special keys. But nobody mentioned the modern counterparts.

C= is a modifer key. It is used to bring additional PETSCII characters and also to change text color. Obviously, it has branding function, too. Modern counterparts can be (Old Apple key) or Windows key.

run/stop Normal function of this key is to stop running program listings or basic programs. Modern counterpart is ESC. When used in combination with shift it loads the first program from datasette. There is no modern day counterpart of this function.

Clr/Home Home function is identical to modern keyboard Home button. ClR is same as CLS command in Dos console.

Restore button, also called as soft-reset, returns the computer into the initial opening state without clearing the memory. It is very useful debugging/or hacking tool. Not used much by the gamers as the key was mostly disabled by the game developers as the first step of copy protection efforts.

Hardware triggered soft-reset idea carried over to Amiga as CTRL+Left-Amiga+Right-Amiga. In some ways it can be seen as a variation of modern CTRL+ALT+DEL

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.