2014. december 11.

An easy repair of a C64

Dirt and spilled capacitors
This Commdore 64C was in good condition for first sight, and worked besides some minor problems, like defective "0" key, and didn't have sound. Adding a spring from my donor C64 to the keyboard, for the missing "0" key was a 1 minute fix. However, opening up the case afterwards was surprising: this later C64C had a casing where there were no screws just plastic hooks to snap the keyboard in place, and snap the whole housing together. It seems to be a cheap solution, however was easy to open up for fixing.

Nice and clean, with new caps
Inspecting the motherboard, in general it was in good condition, however some spilling under two electrolytic capacitor grabbed my attention. Also, the fuse looked strange for me, it seemed to be home renewed: the hair thin burning wire run outside of the glass, and it was soldered to the fuses metal ends. WTF??

Soldered out the capacitors, and washed the main board to get rid of the remains of the fluid on it. Swapped the fuse from the donor, and soldered in the donor capacitors. Anyways, having the capacitors soldered out, I took the opportunity to measure it's properties. Turned out, that even the original capacitors were within specification, however the ESR values were 1.5, 2 times as high as the new ones.

Testing, testing...
Powering up the board, checked the voltages on SID, and I have found everything OK. The SID (the newer 8581 version) requires 0V (GND), +5V and +9 volt. I swapped with a known working one, for testing purposes. And let there be music, I said. And so, there was.

Hitech quick dry procedure
One thing left for the end, cleaning the bare casing thoroughly. All of those small black scratches, old dirt went away, and assembling together again when it dried out, we were ready to play a little bit. :)
Ready to have fun!

2014. december 8.

Repairing Commodore 1351 mouse

I have a Commodore 1351 mouse bought ages ago, for chips. It wasn't functioning properly, since the horizontal movement didn't work. It was sitting in the drawer, waiting to be repaired, until this week. Since I managed to copy GEOS to a spare floppy disk, with my new ZoomFloppy device, it was high time to use it. The symptoms are: it moves the cursor up and down properly, however no horizontal movements at all.

Opened up the casing of the mouse, I found it quite dirty, collected a lot of small particles everywhere around the sensing wheel as well, so my first move was to get rid of that oily dirt, and clean the casing too. The easiest way to clean the PCB, and grease, particles, is to use break cleaner spray used for cars. It dissolves every kind of oils, and sticky dirt, and sublimates very quickly leaving a clean surface afterwards. For the housing I used Domestos, an aggressive whitening cleaner could be easily obtained here around.

Small blue spots are the IR emitters
Cleaning wasn't enough though. I quickly checked the cable with multimeter resistance measurement, looking for incontinent, however I have found everything all right. My next move was to observe whether the infrared transmitters emit light or not. It is a little tricky, since you can not see IR light, however, digital cameras can... like the ones can be found on smart phones. You just need some darker places to see those small bright spots. As you can observe on the picture I took, those IR transmitters are visible as bright blue spots on the picture. You could also observe, that one of them (lower right hand corner) is emitting dimmer than the others. This could be a problem, since probably it's light is not enough to sense movement. Probably that particular LED is getting worn out, but still operational though.

Blue resistors are the new ones
Since I didn't have any spare parts to replace those, and didn't even seemed to be an easy run, I checked the device further. Putting to good use my oscilloscope again, measuring all of the IR receivers on the other side of the wheels, opposite to the IR transmitters, while I was rotating the wheel in front of them. As I measured, I realized that the ones associated to vertical movement, modulates the 5V power source between roughly 0V and 3.8-4.1V. However, the receiver on the X axis, opposite to the brighter emitter modulates between 0V-3V, and the one opposite to the dimmer emitter between 0V-1.8V. But at least, it was a sign, that the receivers are also in working condition.

Commodore 1351 connected to C=64
Traced back the PCB from the IR receivers, I concluded that it works the following way: they are sourced from the 5V power line, and connected to the IC with different kind of pull down resistors, to make the 0V when they don't see any IR light, and closer to 5V when they are. However, I was surprised, that every IR receivers had different pull down resistors in place, probably manufacture time compensation of small differences. The 4 resistors varied from 5.5kOhm to 12kOhm. I quickly need to add, that the two smallest resistors were connected to the X axis receivers. This means, that probably sometime they were capable to drive more current, either because the emitters were brighter, or the receivers degraded by time. So, my theory was: swapping the two small resistors for bigger ones, makes the receivers pull up the line more easily, which means higher amplitude oscillation compared to 0V-1.8V.

C=64 with 1351 mouse, running GEOS
At first I soldered out the two resistors, and added 9.9kOhm ones instead. Checked again on the oscilloscope, nice high amplitude produced by all receivers. Still in the taken apart state, I connected to the C=64, loaded up GEOS, and tested rotating with fingers the individual wheels: works perfectly! Nice job! Assembling together with it's house, I was eager to click around in GEOS... and came the disappointment: the X axis didn't work again. Taking it apart again, checking soldered connections again, everything is fine. Connecting the raw PCB to the C=64, it also works fine! Ok, probably it was some temporary thing, maybe a connection problem. Assembling together again, and testing: X axis doesn't work again. Hmm... probably the PCB, and the housing of the wheels + IR emitters and receivers bends, when I tight down with screws, and gets the two receivers out of alignment. I have loosen the lower screw, and TADA! Works! A little bit unreliable on the X axis sometimes, but at least it works. Now I know, it is a misalignment issue from now on (mechanical).  But at least it became usable. I have a working Commodore 1351 mouse finally!

2014. december 4.

Connecting Commodore floppy to Windows 8.1 laptop

CBMXfer, finished copying GEOS
Back at days, when I had last time a desktop PC at home (it was an AMD Athlon 2500+) in around 2000, it had a conventional parallel port. I was also able to boot it up in MSDOS 6.2, to make exclusive use of that mentioned parallel printer port to connect my Commodore 1541 floppy with StarCommander, and make file transfers back and forth. However, since than, I only had laptops, not having parallel or serial ports, but still wanted to connect my old floppy drives to PC somehow, to transfer those zillions of D64 images I collected from net, to test on actual hardware.

Laptop using Commodore 1571 drive
Now days, I need to say, the most comfortable way to command your Commodore IEC drives (Commodore 1540, 1541, 1570, 1571, 1581, etc...), is to get your hands on a ZoomFloppy device, also known as xum1541 cable. This is a micro controller based USB device, accompanied with drivers for Windows, and some command line utilities to do actual things with it. I also looked up the ebay to find some implementations, since I didn't want to bother making it myself.

I ended up buying 8_bit_fan's smaller implementation, not having IEEE-488 port. The product arrived without any software bundled with it, so I needed to look up, and download everything I needed to make it work. At least, it wasn't expensive. OpenCBM is compatible with this solution, however, the latest version didn't contain the support yet, so I needed to download a prepacked, xum1541 supporting OpenCBM verison, directly from ZoomFloppy's website. Installing the drivers wasn't smooth, since there is no official support for Windows 8.1. The problem is that the USB driver is not signed, so by default, Windows 8.1 won't allow you to install it. To workaround this problem, you can hit the restart while holding down the shift key, in the power drop down menu, on the start screen, to restart your computer in maintenance mode, and selecting the "Disable signed driver constraint" or similar by pressing F7, you can boot into an operating mode, where you can install the driver, even though it is not signed. Rebooting afterwards in normal mode/way, and you are done. Otherwise you just need to follow the steps in the manual you get.

I have found command line operation cumbersome, so I downloaded CBMXfer also. To make work properly, you'd better place it in the ZoomFloppy's version of OpenCBM bin directory, and run it from that location. To make it even more convenient, you should also download and install the latest VICE 6502 system emulator (C=64, C=128, PET, etc...), and copy c1541.exe from it's directory to the same directory where CBMXfer is.

This way I can access my Commodore 1541, 1570, 1571 drives with no hassle, and even brows files stored in the D64 disk images, brows the net, and display the screen of my C=64/128 simultaneously using AVerTV on my Windows 8.1 laptop. :)

2014. december 2.

S-Video cable for Commodore 64 & Commodore 128

Since I got rid of my TV half a year ago, I only use an AverMedia USB hybrid TV dongle for vintage computer video display. I experimented with UHF RF output, with minor success, and also converted one of my C=128 monitor cables to give composite picture. However, it wasn't satisfying enough, so I decided to make an S-Video cable, that can be also attached to my USB dongle.

What is the gain in it? One would ask. Well, let's dive into a little bit of the different video formats first, and how the Commodore 64 produces those. The Commodore 64's VIC chip outputs chroma and luminance signals separately. This is the source of everything displayed, in any format. The luminance signal is essentially an old school black and white signal, which even by the oldest B&W televisions can be decoded and displayed, provided they are working with the same 50Hz mains, since their timing is closely related to that frequency source. The chroma signal in the other hand, is a PAL encoded color information, appropriately synchronized with the luminance signal. After some amplifications, and line separator circuitry, those are available as output as well. However, the amplifier module also mixes the two signals together, producing composite output. This one also can be found as output on the Commodore 64. Mixing the composite signal again with the mono sound channel data, encoded into the picture frames, and putting all these things onto a UHF carrier frequency produces the PAL RF output, which can be tuned on a TV, around UHF channel 36.

AverTV C=64 S-Video screen capture
Since S-Video is essentially a separate chroma and luminance signal carrier plug, we can see, that we would be able to ignore all of the possible distortions added with mix-matching all other signals, to ultimately produce composite, or even worse, RF output.

Quickly looking up the net for a wiring diagram, for SCART cable (which also contains the S-Video signals too), and an S-Video mini-DIN plug pin arrangement, I was ready to solder things together. Since S-Video signal doesn't contain sound, I also needed to make a separate RCA connector for that, on the receiver side, next to the S-Video connector.

The first tests showed flickering colors, even flickering screen, in fact it looked even worse than it was on the composite. At first sight I was very disappointed, but after that I recalled that I red somewhere that the Commodore 64/128 chroma signal is too strong for modern TVs, for their S-Video connection, so somebody installed 330 Ohm resistor in the way of their chroma signal cable. Looked around, and only found 200 Ohm resistor at hand. Quickly modified the cable, added that resistor into the C=64 DIN connector housing, and TADA! Works! Great! Finely detailed, vibrating colors, crystal clear display! By the way, grounding the sound input pin on the video connector really makes a difference, by significantly lowering static whoom noise.