Williams Hardware, Switchers and CMOS

So this keeps coming up a few times a year, almost like people completely forget about how to use Google every now and then.

Someone has a Williams 6809 hardware game like Defender, Stargate, Joust, etc.  They install a switcher instead of repairing the existing linear supply (which is  OK, people have their reasons), and everything works great, except for the fact that they occasionally get CMOS corruption and lose things like settings, bookeeping, and scores.

Is something wrong with the switcher?  No, something is just wrong with the CPU.

The Motorola 68xx and early 68k (I believe) had a really nice feature.  Once running (out of reset) if the supply voltage drops below the minimum, the CPU essentially starts executing random instructions and can stomp all over memory.

If it tries writing ROM, no effect.  Writing to volatile RAM?  Game is going down anyway, so no big deal.  Writing to your CMOS data?  Now you have a problem.  The design of Williams’ hardware included a CMOS protection circuit (actually 2 kinds of protection, but we are talking about the power-related one).  This circuit detects the voltage drop from the game turning off and prevents writes to the CMOS so it does not get stomped by a malfunctioning CPU.

How does it work? By monitoring the +12v line.  Due to how the original linear supply works, the +12v line will start to drop before the +5v line.  The CMOS protection detects this and turns on the CMOS write protection before the +5v drops low enough to make the CPU start going crazy.

When you upgrade to a switcher, you change the behavior of the +12 line – instead of dropping before the +5v, it now drops at the same time.  With this new behavior the CMOS protection stuff cannot kick in before the +5v drops too low.  The result?  Those random CPU writes might eventually write to the CMOS memory, corrupting it.

The fix is easy: get the +12v line to drop before the +5v line, like on the linear supply, so the CMOS protection has time to kick in.  Adding a cap (4700-18000uf) across the +5v supply should keep it up long enough so that the +12 drops before it and the protection circuit can do its job. Et voilà – your CMOS corruption problem is fixed.  An old idea I had was to put a CPU supervisor in place (like the Maxim MAX* series) to handle a low-voltage situation.

Update: I decided that this was a problem that could use a better solution along the lines of a drop-in solution and brought the old idea back to life.  See here for more info.