Welcome to Graham Toal's personal software wiki.
I have been writing computer programs since 1974. Many of them are lost, but a lot of them are still around. On the eve of the new Millenium (31st Dec 2000), I decided it would be a good time to start putting them on the net. Now I am moving some of the things I previously posted on a plain WWW page to this Wiki. It's an interesting experiment. Let's see how it goes...
Interested in writing compilers?
Static Binary Translation
- Yahoo Group
- VectorLator - project to write SBT's for all known vector game platforms
- Cinematronics - successful translation of Cinematronic's Tailgunner game to the GP32 handheld. This was the first SBT I wrote and as a result of this learning exercise I wrote the HOWTO listed below. This one makes heavy use of runtime profiling to iteratively generate better code.
- rewrite of Tailgunner in C for Zonn Moore's ZVG vector generator for the PC. (I use a Vectrex vector monitor as the display)
- Z80 work-in-progress translation of Ms Pacman - this was my second attempt but it turned out that the Z80 is pretty smart with the way it handles flags, so it didn't give much opportunity to try out some of the fancy optimisations I described in my HOWTO document.
- 6502 work-in-progress translation of Asteroids - this was originally written by David Welch but I hacked on it pretty severely so that I think even he would have trouble recognising his code now. I have put the most work into this one from the point of view of optimising at translate time.
Currently active projects
- EditorsOneOhOne: a project to write and document a powerful but elegant screen editor (i.e. not Emacs-like bloatware)
- VmsEmulator: a brief description of having some fun with VMS...
A semi-transparent spam filter which intercepts mail transmission at the SMTP layer and tags spams with a marker in the headers.
- A new Spam filter tokenizing algorithm, which may be the next stage in development for Bayesian filters, bringing to them some of the benefits of rule-based systems (and incidentally opening them up to the possibility of using ASICs to implement the scanning in hardware in real time).
- Scrabble. I've been working - very slowly - on Scrabble for 20 years now. It's very much a background activity when I don't have anything else to do, which lately has been never. My ultimate goal is twofold: to write a truly international word game, in every language supported by Scrabble; and to make some significant advances in Scrabble programming - in particular to prove that Monte Carlo simulation is not the best way to handle the AI element of lookahead in the game.
- Spelling checking and correction. I have written a library of tools for handling words which can easily be adapted to any word-intensive task, such as spelling checking and correction, Scrabble and all other wordgames, and even spam recognition.
- SprintPcs vision images
Archive of previous work
- Demo: Memo functions in C - it's not just for LISP and Pop2 any more ...
- Demo: Simple threaded code interpreter - how to add an efficient programmable layer to your code without needing to understand the target archtecture.
- Demo: Large bitset operations in C; Lazy evaluation - Pascal-like sets in C, or "how to write a free-text search engine..."
- everyone writes a calculator at some point in their career. Here's mine, complete with operator precedence and almost no parser!
- Old software page - the rest of my code samples that have not yet been transferred to the Wiki.
- BBC Micro software that I wrote. I have a lot of this stuff, off old Winchesters, 5.25" disks, and 3.5" disks. I'll put it up here as people on the ClassicCmp list ask for specific programs. I also have some saved BBC and ITV teletext pages from the early days.