-- Main page -- Programming -- Electronics -- Radio -- Astronomy -- Chinese -- Links -- About me --

Programming

Computer programming has been my main interest since I was eleven, and I have written a lot of code since then. I present a selection of programs here. Some of those not included can be found on my page for minor projects, but this page is dedicated to interesting and (by my standards) somewhat successful projects. Programming is at the same time a science, an art, and a necessary evil when you want to get something done. Consequently, some other projects that involve programming are located in the other sections of my website.

This list looks rather short for a decade worth of programming, because most of my projects are not particularly interesting. Some have been cancelled due to lack of interest or practical difficulties, and many experiments simply failed.

All information provided on my site is in the public domain, except when explicitly stated otherwise. This is mostly for practical reasons, as anyone trying to deal with licensing issues in free software projects should be able to appreciate.

ProjectYearDescription
neoload2008 A C64/C128 program to load file system images from a tape to a GeoRAM/NeoRAM memory expansion unit. Features relatively advanced (by early 1980s standards) error correction/detection.
AES-2562008 In case you ever need a modern, strong encryption algorithm for your C64 (or any other 6502-family system), here is a fairly efficient implementation. Code size is 752 bytes, and another kB of RAM is used run-time for lookup tables. Speed is about 10318 cycles/block, or 81 cycles/bit.
factor2007 A program to find the prime factors of an integer, including an implementation of the Multiple Polynomial Quadratic Sieve. Parts contributed by Andreas Launila. Released under the GNU General Public license.
kandie2007 A handwriting recognition system, using input from a graphics tablet (via XInput). The basics were written as a homework task about Hidden Markov Models, but I added support for whole-word (or whole-character, in the case of ideographic languages) identification.
Elliptic Curve DSA2007 A simple implementation of ecdsa over a 256-bit prime field, using GNU MP. It's not very fast, vulnerable to all sorts of timing attacks, doesn't use point compression, and doesn't validate inputs.
simplecrypt2007 A small cryptography library, with AES (128, 192 and 256) and SHA-256. Although a Makefile which produces a library is provided, the primary goal with this little project is to have some reasonably efficient and portable basic cryptographic functions to include in your programs when necessary, without bothering with external libraries.
muhash2007 A series of hash functions and a pseudo-random number generator designed for 8-bit systems, and the 6502 in particular.
Hamming codes2006 A Hamming code (29, 24) decoder/encoder in 6502 assembly language. Intended for use in a C64/C128 tape loader, but can be used independently.
ipirc2005 An IP (v4 and v6) tunnel over IRC. Simply let all nodes of a network connect to a particular IRC channel, and send your packets (base64 encoded) there. Tested with protocols such as SSH and HTTP, and even though the latency is several seconds and the transfer rate in the order of 100 bytes/second, being connected to the IPv6 internet through IRC is a very exciting experience. Requires Linux and Ruby.
EdForth2005 A really minimalist Forth compiler and interpreter for Linux, intended to demonstrate the basics of a Forth on a slightly more modern architecture.
The F System2004 A small operating system for i386 written in assembly language and Forth. One feature taken from the Forth world is that it compiles a large part of itself on boot. Some of the code base is taken from earlier attempts at PC operating systems I wrote around the age of 15, and the overall quality isn't that great. Once upon a time the user base for F was an entire user, but this declined rapidly after disk corruption and other bugs surfaced.
TForth2002 A small Forth compiler for DOS. Works well and comes with documentation and a number of example programs. Note that one user (or should I say the user?) has reported strange crashes, which however never occured during my testing on several different systems (a 286 with DOS 3.3, a 386 with DOS 6.22, a Pentium with Windows 98, a Pentium 4 with Linux and DOSemu).