MainHELP Glossary Hardware SAL Workshop Companies FTP ToolsBackAbout

Reset Switch

Project: Switch for resetting the C64
Target : C64, VC20, SX64
Time   : 15 min.
Cost   : ~ 1 US$
Use    : - enhancing the computer's lifetime
         - no need to reload assemblers, etc. after crash
         - possibility to start monitor at any time within program

Summary

Push-button switch between

Details

Pin 3 (/RESET) of the user port is connected with pin 40 (/RES) of the CPU. Pulling this line to LOW (with a switch) makes the processor getting the address stored in $fffc / $fffd (RESET vector) on the next "0"-"1" transition of this line and thus jumping to the reset routine located at $fce2 (original ROM). The difference between a power on and a reset is that the latter leaves memory unchanged except for some zeropage locations, thus not destroying any programs.
For reviving BASIC programs, you first have to restore the BASIC pointers, as they have been reset during the BASIC cold start executed by the kernal's reset routine:

(pO = p [Shift] o; pE = p [Shift] e)

pO2050,8:sys42291:pO46,(pE(35)-pE(781)>253):pO45,pE(781)+2and255:clr
The reset switch also enables you to have a quick look at any program with an ML monitor by resetting the C64 and loading the monitor with the appropriate start address. This is necessary for programs unpacking theirselves prior to execution, for example.

The switch you will build into your C64 is for connecting the reset line briefly to ground, which gets the mechanism described above going.

Commodore stated in 1984 that simply shortcutting these pins via a switch has caused harm to the C64 in some cases [1], but to my knowledge, this simple construction serves well in hundred thousands of C64s (or how many there are still in the field), including my own.

Note #1: You can also connect the reset switch to pin C (/RESET) and pin A (GND) of the expansion port, but since they are both on the backside of the PCB, this method is probably only good for upgrading an expansion port module with a reset switch. If pin A is absent, take pin Z, pin 1 or pin 22 instead.

Note #2: In case you have an old board where the serial reset line is directly connected to pin 40 of the CPU, too, you can also build a serial reset switch.

Ingredients

Instructions

  1. Remove all cables, then open case.
  2. Solder cable to switch (middle and outer pin, if there are three).
  3. On the other end of the cable, solder one wire to pin 1, the other one to pin 3 of the user port. DO NOT solder them directly onto the contact area, try soldering them to the nearest visible bare point connected to the above pins instead.
  4. Connect power plug.
  5. Switch your C-64 on and wait for the startup screen. Then press [SHIFT]-[CLR].
  6. Press the reset button. After a short delay the startup screen should show up again.
  7. If everything seems fine, attach the switch to the case and close it again. If possible, place the cable above the screening cardboard, not beneath it.

Possible failures

Important note! It is wise to choose a color for the reset button which your pet does not dislike, as it is likely that it otherwise will approach it with the intention to imPRESS it.


[1] Computer Schau, Sonderheft Nr. 201, p.60, "Resetschalter"


Updated: September 16th, 1997
Created: January 29th, 1997
Status : Verified on September 16th, 1997

Site copyright © 1997 by Marc-Jano Knopp
This document is part of MJK's Commodore 64 & LCD Page
Brought back to life by Peter Schepers, Dec 10, 2005 because I really liked this site!