16 December 2016
The Acorn Atom was an microcomputer produced by Acorn Computers in the early 1980s. It was my first computer and, as was common in the day, I got to know it in a lot of detail. Since then, I've owned many computers, but have become more and more distanced from the details of the machine.
Around 2000, I thought that writing an emulation of my Atom could be an interesting little project. I started an Object-based C implementation using ncurses for the display. Since then the program has evolved and been rewritten many times.
It now makes use of the following:
- git for version control;
- UMLet for the UML design diagrams;
- SCons for the build system;
- C++ and the Standard Template Libraries;
- Log4cxx for the extensive logging facilities;
- Gnome Glibmm libraries mostly for the UTF-8 string type;
- SDL v2 for the event loop, graphics output and keypress inputs;
- libxml++ to parse the XML configuration files;
- RelaxNG to define (compact) schemas for the XML configuration files;
- Trang to convert
the compact schema to the XML schema files;
- I tried using Jing to validate the schemas, but it sometimes passed and sometimes failed.
- Robot Framework to provide an acceptance test framework;
- Python for ad hoc utilities;
- Various ROM files that I've scoured the Web for.
Indeed, in many ways the project has evolved in to tool that I've used to explore various libraries since the emulator itself was largely complete many years ago.
The emulator is highly configurable, does all the monochrome graphics modes, can take keyboard input from standard-in and send screen output to standard-out, and has a Tape simulation. It is still a Work-In-Progress but I thought I'd publish and be damned.