Currently working on a personal programming project called 'Elvish'. Elvish is a virtual machine of my own design consisting of the following components:
 
- THR-1 (pronounced 'Throne'): a 68000-like CPU with a 24-bit (16Mb) addressing space and sixteen 32-bit registers. The Instruction Set Architecture has been designed/documented and it will support a variety of clock speeds. The initial implementation has no clock regulation but 16MHz is pending with other speeds to follow.
- Pixie (PIXel Interface Emulator): a virtual graphics card with raster-bar capability which currently supports a 640 x 400 display using 2 colours from a 24-bit palette. Going forwards it will support a 4 bitplane mode at 320 x 200 in 16 colours, from a 24-bit palette and a 256 x 192 mode with colour-clash almost identical to the ZX Spectrum. Other, higher, resolutions will follow.
- [Name TBD] a virtual soundcard with similarities to the SID chip, combined with a couple of 16-bit stereo PCM channels.
11th August 2026
I'm at the point where the Virtual CPU is executing the first implemented instructions. This needs to have built-in testing so rather than hand-assemble object code and I want the test-suite to be seme-written in the native machine code of THR-1 thus I've started work on the assembler (called "Elasm"). This in turn requires regular expressions as part of the parsing process. C doesn't have these by default. I know one can use the C++ standard library for the purpose but this is a home-brew project so I'm rolling my own regex engine. Regex is a solved problem but I don't need an all-singing-and-dancing solution, just some basics. I've been researching the implementation of regex and have started a Finite State Automata implementation with a view to compiling arbitrary regex (albeit a subset of the modern specs) and wil be eating my own dogfood rather than just dropping in a 3rd party library the size of a small country.