Hobby projects
Floppy disk drive replacement (Arduino project)
The most recent project is the software for a SD card and Arduino based floppy disk drive (FDD) replacement for the C64. The software runs on an Arduino and expects the Arduino to be wired properly, but you can look at the code, which I think is quite well documented. The input, output and functionality of most functions are documented using Javadoc/Doxygen style comments. The readme.txt file introduces the reader to the project, the hardware requirements and the organization of the code. If you don't know the Arduino environment from before, the .ino files are just C/C++ files in disguise.
Schematic of the FDD replacement.
Download the source: serial3.tar.gz
Cross-assembler targeting the MOS 6502 family of processors
This is a simple cross-assembler targeting the MOS 6502 family of processors. The assembler has been tested to compile on Linux (Ubuntu) and (Mac) OS X. It uses flex and bison for lexing and parsing, the rest of the code is C and C++. You can see from this hobby project that I understand a little about assembly, assemblers and machine code, even if the architecture is 8-bit and quite simple.
The assembler is built using make, just type
makeon the command line. This should produce the binary 6502-asm. An assembly file is included to test the assembler. When inside the 6502-asm directory, type:
./6502-asm test/map8.asmto try out the assembler. This will produce the output file test/map8.prg which can be run in a C64 emulator, e.g. VICE.
Download the source: 6502-asm.tar.gz
HTTP Server (from a network programming course)
This is an assignment for a network programming course. I don't include it here for its functionality, but so you can see more of the source code I have written. I think the source is quite well commented, using the same Javadoc/Doxygen style comments as in the Arduino project above. The assignment2.pdf file introduces the reader to the functionality and the organization of the source code.
Download the source: http-server.tar.gz