Skip to navigation

The tools I use

Keeping it uncomplicated and doing everything by hand

My core philosophy when tackling big disassemblies is to keep things as simple as possible, and that extends to the tools I use. This quote from the Serbian computer pioneer Voja Antonić says it all:

A programmer who has never coded ones and zeroes in machine language is like a child who has never run barefoot on the grass.

I like to run barefoot on the grass, because the ones and zeroes that Antonić mentions represent a visceral connection between the code and the hardware, and this fascinates me. If you ran The Sentinel on your BBC Micro and measured the voltages on the legs of the silicon chips inside the computer, then you would find each binary bit of the game code appearing as either 5v or 0v on quite a few of those legs, particularly those of the CPU; the code genuinely is the ghost in the machine.

In terms of disassembly, I try to stay as close to the code as possible, because that makes discoveries so much more interesting. For me, software archaeology is about loosening the dirt of ages through gentle brushing; it's about revealing hidden subtleties of code and long-buried algorithms through careful analysis. It rewards the use of small, basic tools; you can't feel the grass between your toes if you're wearing hobnail boots.

My process is deliberately minimalist. I disassemble the game binary into a text file and create a reassembly pipeline, and from that point on I use little more than a basic text editor to add the comments and label names and 80-column text layouts that define my work. It is a totally manual process; I lean heavily on regular expression search-and-replace, but I disable pretty much everything else: things like auto-complete and tooltips just get in the way of my thought process. I don't want help, I want to focus, because I find that's the only way that I can get through a seven-month project like this.

Here, then, are the tools that I used to pull apart the game binary for The Sentinel to produce the project website and GitHub repository.

ToolPurposeMy choices
DisassemblerFor converting game binaries into text files containing assembly language source codepy8dis
virtual6502
AssemblerFor reassembling the source code into a working game discBeebAsm
Build toolFor managing the reassembly pipeline and checking that the results are correctMake
Python
Text editorFor adding handcrafted annotations to the source code and (crucially) letting me apply regular expressions to the textVSCode
BBEdit
Textastic
Hex editorFor analysing, comparing and editing binary filesHexFiend
EmulatorFor analysing the game as it runs and tweaking it to discover how it worksb2
JSBeeb
Source controlFor saving the results of my hard work and letting me wind back the clockGitHub
SourceTree
SpreadsheetFor analysing data tables and monitoring project progressExcel
Google Sheets
Image editorFor editing website screenshots, creating images for deep dives, managing animated GIFs and batch processing of imagesGIMP
ImageMagick
ScreenToGif
ScriptingFor building a website from the repository, analysing the code, spellchecking and morePython
bash

The above list covers the tools that I used for disassembling The Sentinel, which is the subject of this diary, but I do use other tools for non-6502 projects. For example, I used Gerph's RISC OS disassembler to disassemble the ARM binary for my Lander project, the vasm assembler to reassemble it, and the Arculator and Archimedes Live emulators to run the results.

I should also include honorary mentions to all the other tools I've used in my projects: Disc Image Manager, beebtools, dfsimage, Quadbike 2, BeebEm, B-em, beebjit, Clock Signal, Electroniq, Elkulator, RPCemu, BeebDis and Perl. We Acorn fans are so lucky to have such a variety of excellent tools, and it's all for free... what a treat!

Change is afoot
===============

I documented The Sentinel between September 2025 and April 2026, and during that period the world changed forever. AI coding assistants graduated from being merely interesting tools to being The Future of Coding, and by the end of my defiantly manual project, the cleverest minds in the Acorn community were doing some absolutely astonishing things with this emergent technology.

In particular, Robert Smallshire started using Claude Code to produce some extremely impressive disassemblies of 8-bit Acorn code; you can explore the results on his excellent Acornaeology website and can find out more in his fascinating presentation from the 2026 TNMoC Econet LAN Party. This is clearly the future of disassembly, and I'm looking forward to getting stuck in when I have a project that is suited to a more assisted approach.

For now, though, I still want to run barefoot on the grass, and I can't yet imagine delegating what I consider to be the fun part to anyone, not even Claude; to labour the metaphor, you can't feel the grass between your toes if someone else is doing the running. At the time of writing (July 2026) I've not yet managed to use AI in any of my projects, and although I suspect this won't be the case for long, my various disassemblies and analyses currently remain 100% handcrafted, using only the most basic of tools.

We live in very interesting times!