I won a "Commodore 64 - working" on a popular auction site. There must have
been some mistake for the machine I received did not actually work. And I
wanted a working C64 right now so returning it and trying to win
another one would take time...
Maybe I wanted to put my large format C64 schematic to good use (finally) or
perhaps I was looking for a challenge. So I got a partial refund ("Working" auction converted
to "As-is - untested") and impatiently began the repair.
1. A small soldering problem
The board and its schematic
With the C64 open and the schematic nearby, I did the following: (order approximate)
Removal and reinsertion of all socketed chips. No change.
Check for 5volt on the CPU, memory, and a few logic gates. No problem, nice clean 5v.
Check if the CPU clock input has a signal. Yes.
Check if the reset circuit work. Seems ok.
Notice another 5 volt supply on-board (+5V CAN) obtained from the 9V AC input. I check
it with a voltmeter: 0 volt. Ah ha! Finally a problem!
So, why was the 5v supply not working? Simply due to a bad solder joint at the power connector. I
guess the forces involved when connection/disconnecting the power cable are to blame for this.
2. Replacing the RAM chips
Replaced RAM chips
After fixing the solder joint, I was full of hope and turned the machine on. I quickly confirmed
+5V CAN was working, but unfortunately, still no image. A video signal was also being produced,
albeit fully black. No text.
This time, I had a look to the CPU BUS and there was activity... I then somehow suspected
the RAM might be in cause. In order to swap the chips with new ones (new many years ago),
dis-soldering the chips and installing sockets is necessary. There are 8 DRAM chips so
it took a while. I did it one chip at a time, testing the machine after each step. In order
to quickly find the bad one(s), I did it from the dirtiest (the pins were black) to the
cleanest, hoping I would find the bad one sooner. Well no luck, it only worked after
the last chip was replaced. To remember: Never judge a DRAM chip by its appearance.
3. Black and white picture?
LCD: ...where are my colors!?
So once the RAM chips were replaced, I finally got the welcoming Commodore basic screen
telling me it was "READY." on a nice blue background Oh no, what now,
no colors! And why is the image slowly "rolling" vertically?
At that point I was using the RF modulator so I decided to try a composite
connection instead. But it did not help. The result was a black screen with a
"No signal" message. In short: RF = B&W + vsync problem, Composite = No picture.
CRT TV: Ok!
Before diving once more in the schematic to hunt for a possible cause, I decided to
try on an old CRT TV. Good thing I did for it worked perfectly. So now I knew
the C64 was probably working correctly. But I was not going to give up and
put up with the annoying 15 kHz pitch CRT TVs emit (I'm not used to it anymore).
In the following section, the battle to convince my LCD monitor to accept and display the
C64 composite video signal.
Composite video and and LCD TV
I inspected the composite video signal with the scope and initially I did
not see anything wrong. Being in fact a video signal newbie, I assumed the
C64 output was too weak. In fact, I learned later it is not so important. But
this was based on the observation that the amplitude was much lower when
connected to the monitor (due to an internal 75 ohm termination resistor).
With that in mind, I built a simple test circuit using a THS7314DR to obtain
a 6db gain (you get 2V per volt). Now the output signal was strong. But still
no picture on the LCD.
Without knowing exactly what could be wrong, I modified the circuit in many
way to experiment various theories without success, until in an attempt
to "trunc" the video signal from below to try and see if reducing the
depth of the sync pulses would help. I did this by connecting the IC
ground pin to a potentiometer.
Changing the sync depth did not work. However, by setting the potentiometer
very carefully such that the sync pulses are almost completely gone, a
nice picture suddenly appeared!
First working signal
Signal from C64
Signal from C64
I concluded that the sync pulses were probably part of the problem so
I inspected this aspect of the video signal more closely and discovered
a discrepancy in the V-sync sequence. Compare how the portion marked 'm'
in figure-2-2 from the ITU-R BT.470-6 standard with the waveforms
pictured on the right:
So it would seem the C64 video signal does not conform exactly to this part
of the standard, and I assume this is what confuses my LCD. On the other hand,
the CRT monitor does not mind.
My little experiment did yield a picture, but it was not an acceptable solution.
The GND voltage had to be tweaked very precisely, and after a few minutes,
it had to be fine tuned again (voltage drifting due to heating up, etc...).
The next thing I did was to work on a better solution. I added an LM1881 sync
separator to convert the sync pulses to a logic signal directly usable
by a micro-controller. I also added an AVR micro-controller programmed to suppress
the invalid sync pulse.
At first, the software only suppressed the small (approx 3us) incorrect pulse
shown above. And just doing that was enough to get a picture on the LCD. However,
I noted some horizontal jitter... After some experimentation, I found that
completely suppressing the 'm' period worked well (the picture was stable), but
it would probably be better to inject the correct pulses. I may do this
eventually, but for now, it's working well!
I did not buy a disk drive for the computer, but it does not matter. There are now
better solutions where the drive is replaced by an SD card!
The SD2IEC has a disadvantage in that it does not support most fastloaders. Many games
are available in cracked versions where the fastloader can be disabled, or with
the fastloader removed. I'm told many demos are not available in no-fastloader versions
so the SD2IEC would not be a good choice for demos.
Fortunately, SD2IEC supports, among a few others, the SJLoad
fastloader which really reduces load time. Combined with
CBM FileBrowser for navigating directories and disk images,
it is really easy to use, and also not too slow. Some typing is required though:
LOAD"!",8 and RUN followed by LOAD"FB",8 and then RUN again. ("!" is SJLoad and "FB" is the file browser. Manually-typed filenames are best when they are short).
While I sometimes use my competition pro joystick, I tend to prefer SNES controllers because that's what I grew-up with.
Using SNES controllers with on a Commodore 64 is possible with my SNES to Atari/Commodore adapter.
In many games, the joystick-up direction is used to jump which is not comfortable on a gamepad.
This is why my adapter has mappings (see Style 2 and 3) to map this direction to buttons.
A few games
In conclusion, here are a few pictures of games I recently played.