This page is a nearly-complete list of software released by Jack Whitham. The majority of these packages are free software; though some are actually hardware designs in VHDL form.
Smaller programs and patches:
- Graphical Nethack - Online! is a web application allowing you to play the Roguelike adventure game "Nethack" in a web browser, with graphical tiles.
- risk.py is a Python program that automates dice-throwing for the board game Risk. Most games of Risk are dominated by the time taken to roll dice; this program all but eliminates that problem by replacing the dice (you still need a board and soldiers, etc.). It has a simple text interface, and works on any platform with Python installed (e.g. Linux, MacOS). It uses the "attacker rolls first" rule automatically to improve the chances of the defender.
- pickleserver.py is a Twisted Python module that implements a lightweight distributed computing platform for Python programs. I use it to distribute experiments to a group of machines on a LAN. It is also useful on a multi-core system: it makes it easy to run N single-threaded tasks on N cores. Its advantage over the many programs that do something similar (e.g. BOINC) is (1) good Python integration, and (2) extreme simplicitly.
- udg.py is a Python module that generates uDrawGraph files from Python data structures. This is useful for debugging graph algorithms. For my PhD work, I used this to visualise control flow graphs.
- epsfixup.py is a Python program that modifies an EPS image file so that it will be processed with high quality compression by the PDF distiller. This is useful when the PDF image compression is destroying the quality of images in documents. This external page explains what is happening in detail.
- Sound Troll locks the Windows recording input to a specified device, preventing other programs changing it. This might be useful if you have two sound cards. This program is written in C.
- Static builds of various Linux utilities.
- My SOCKSified version of SDL_net allows you to enable an SDL application for SOCKS. This program is written in C.
- thumbnail is a Python extension (Python + C) for Windows XP that (1) allows Python programs to generate thumbnails of documents, and (2) communicates with a Flash applet via a local connection.
- Simplescalar patches and VirtualBox appliance, for those wanting to use Simplescalar/ARM on modern systems. I'm going to keep these online indefinitely, but I now tell everyone to use gem5 instead of Simplescalar if possible.
- em180 is an emulator for the Z180/64180 microprocessor for Linux systems. It is an extension of an existing Z80 emulator; it implements most of the new Z180 instructions.
Larger programs and projects:
- The SMMU project includes (1) hardware and software implementations of the scratchpad memory management unit, and (2) other software used to study its application to various benchmark programs.
- The virtual lab project includes a great deal of software written by myself, including two servers and one shell written using C, and client libraries written using Twisted Python. It also includes a number of substantial modifications to the Linux kernel described on this page. The modified kernel is, of course, available for download.
- The software library I wrote for my final year project as an undergraduate. This is a search engine for analogue electronic circuits (expressed in SPICE format). The project report provides all the documentation. This program was written in C and C++.
- 20,000 Light Years Into Space is a steampunk-themed strategy game where you have to manage a steam supply network. It is written in Python and runs on Windows and Linux.
- My PhD thesis includes a very large software distribution that includes simulators, benchmark programs and WCET analysis tools.
- The Nethack Valentine's Day 2004 Special is a game that was written as a present for Jillian. It is an extension ("mod") for Nethack. This program is written in C and runs on Linux systems.
- Snowplough is another mod for an existing game, this time Digger. It makes Digger look all Christmassy. This program was written in C, and runs on Windows and Linux systems.
- York is a game inspired by Carcassonne, one of my favourite board games. Unfortunately I was forced to abandon this programming project due to time constraints, but all source code is available in a "mostly working" unfinished state.
- A fixed point mathematics library for the Z180/64180. This is written in Z180 assembly code; it is part of an undergraduate project.
Hardware designs:
- Teaport is a high speed serial UART, designed for the virtual lab project. The UART is in a form that can be imported into Xilinx EDK. It interfaces to a PLBv46 bus and can be controlled by a PowerPC 405 CPU. It uses a large FIFO and allows Linux programs to send and receive serial data reliably at high speeds (several megabits per second).
- Virtual Lab Interface Hardware is a component that concentrates multiple bi-directional channels into a single serial connection. This allows software to communicate with several hardware devices in a single FPGA. One of these is the debugging device, which generates a debugging system for VHDL hardware designs, allowing inspection of registers, single stepping etc., via a serial cable. These components are related to the virtual lab project, but they do not require any virtual lab hardware or software.
- My PhD thesis includes synthesisable hardware designs for a predictable CPU and its peripherals.
- FX12 Linux is (1) a Xilinx EDK hardware design and (2) a set of modifications for the Linux kernel. Together, these components implement a complete Linux system for the tiny Avnet FX12 mini module, which features a Xilinx Virtex-4 FX12 FPGA.