Write-Only Memory:
The Blog of Kevin Thomasson

DIY, electronics, programming / whatever.

Posted in DIY comments

Gamepad for retro computers

If you are searching for an Atari compatible joystick for your classic computer you have plenty of options at your hands. If you on the other hand, are looking for a gamepad—you are pretty limited in your options.

Available or not, I really wanted a good gamepad to use with my Commodore 64.

Joysticks vs gamepads

One thing that I really can't get through my head is why joysticks continued to be the main game controller type for these computers for such a long time after NES and SEGA Master System entered the scene. A gamepad is in my opinion superior to a joystick in all aspects; they are more responsive, have better ergonomics and are cheaper to produce.

My finished NESsy gamepad next to the RetroLink!My finished NESsy gamepad next to the RetroLink!

Read more

Posted in Programming comments


Sometime in 1995, me and a friend of mine created a program called Atom in QBasic during one of our weekly computer-nerd meetups. The principle of the program is simple; atoms smash into one another creating even more atoms. Atom creates very interesting results despite its simplicity, and we wasted a considerable amount of time watching atom collisions and modifying parameters back in the day.

ATOM.BAS running in QuickBasic 4.5 inside DOSBoxATOM.BAS running in QuickBasic 4.5 inside DOSBox

Ten years ago, when I was learning to program Java at the university, I wrote a program emulating the behaviour of the original program as an Java applet. I was in search of this code for reference and inspiration as I am planning to make a version for the Commodore 64. While searching I stumbled upon the original QBasic files! I was able to execute the program after installing DOSBox and finding a copy of QBasic. Fueled with nostalgia and inspiration, one thing led to another, and before I knew it I had created a pixel-perfect (at least in Chrome and Firefox) JavaScript port of Atom—including implementing a routine to print text using the VGA 8x8 bitmap font on a HTML canvas :)

Read more

Posted in Uncategorized comments

Input device snootiness

It feels great. It sounds right. A good keyboard and mouse can transform the act of entering data into a true pleasure. This is the story about how I found a keyboard and mouse perfect for what I do the most—coding.


When my Logitech diNovo Edge keyboard went belly up about a year ago I began my search for a replacement as the diNovo Edge was discontinued. I really liked my diNovo Edge—the only other keyboard I had been more attached to was the mechanical keyboard on my ancient Victor 286p.

CM Storm Quick Fire Rapid, MX brown keys with custom caps and the MIONIX NAOS 8200.CM Storm Quick Fire Rapid, MX brown keys with custom caps and the MIONIX NAOS 8200.

Read more

Posted in Programming comments

QuasiXml - an XML-ish parser for .NET

I decided to write my own XML parser when faced with the task to load non-well-formed XML files into an object model in C#.


You might rightfully wonder why on earth I wasted time on creating an XML parser when .NET framework already has the capability to parse XML perfectly in several ways. My answer:

The ideal thing to do is obviously to get the producer of the markup to fix existing "wellformdness" issues, but in reality this is not always an option.

Read more

Posted in DIY comments

Scavenged and reverse engineered

I can't help looking at what others leave behind themselves when I discard of my own junk. Electronic junk is the most exciting because it is a very good source for free parts and inspiration. If I find anything that prevents me from buying new stuff, it is a win for the environment as well.

Stepper motors

The stepper motors are manufactured by Minebea-Matsushita and are labeled 23LM-C355-50V. A search on Google does not return a exact match but other motors beginning with 23LM-C355 can be found. These motors are both bipolar and unipolar but share some properties; they all operate at 24VDC and have a step angle of 1.8 degrees. The motors I've found have four wires, and therefore, are bipolar. Measurements with a multimeter revealed that the red and yellow wire are connected to one coil, thus blue and orange are connected to the remaining coil.

Stepper motor controllers.Stepper motor controllers.

Read more

Posted in DIY comments

Professional looking front panels

I like it when a DIY project has that extra touch or finish that makes it stand out and hard to separate from a professional product. Front panels are one of those things that are quite hard to create in a professional manner. I have found a couple of guides on the internet on how to make DIY front panels, none of which demonstrates a method that, in my view, produces satisfactory results.

Professional plastic overlays

Professionally made plastic overlays comes in different shapes and materials, and can be found on almost every thinkable device with a control panel. They can be made of a number of materials including polycarbonate, polyester, PVC and vinyl. Plastic overlays often have features such as indicator windows for LEDs and displays, cut-outs and embossed areas for buttons.

The result of the epoxy glue mould process. Note the LED indicator window!The result of the epoxy glue mould process. Note the LED indicator window!

Read more

Posted in Programming comments

Hello, World!

I have had this idea about starting a blog for quite some time now. Each time I have made an mental effort to start, I could not get past the part were I would choose blogging software. There was always something that felt wrong for different reasons, and when thinking about making my own blogging software I always came to the (somewhat depressing) conclusion that it has been made too many times already.

Let's reimplement the wheel

This time around I am fed up with negative thoughts like "it's been done". Yes, it has been done, but not by me, and that's really all that matters. Making a custom blog engine is a really good opportunity to catch up on areas left neglected by work and spoil yourself with tailor made software supporting your own workflow. In my case, the technical areas I wanted to include were:

Read more