Brian Ruthven

Welcome to SpecOS!

What is SpecOS

SpecOS is a pet project to create a multi-tasking OS for the ZX Spectrum +3 computer.

SpecOS (in a conceptual form) was born around September 1994, and came to life for real sometime around August 2010. The original idea was based on stack-switching, driven by the 50Hz ULA raster interrupt to the cpu.

After a 16-year gap, including University and 10 or so years in the computing industry working with Unix, this developed into a general-purpose Unix-style kernel-based model, striving to implement as much as possible without disabling interrupts, and therefore to reduce the amount of time lost e.g. during disk accesses (which CP/M is documented to suffer from).


  • Must be runnable on real, unmodified +3 hardware with no expansion devices to "assist" or replacement ROMs (although a relatively common peripheral of the time with some RAM, like a Multiface could perhaps help out with a bit of extra RAM).
  • Userland processes have no knowledge of other programs running.
  • Userland processes have no knowledge of kernel implementation, load address, etc...
  • Avoid disabling interrupts where possible.
  • Avoid memory fragmentation.
  • Must be "thread-safe" (i.e. preemptible at any point).
  • Userland processes can also be compiled natively under Unix (with some helper library support).

Above all, this is a learning exercise, so there is a general policy of "don't copy code from anywhere". Yes it's re-inventing the wheel somewhat, but that's kind of the aim here!

[Where to start]
[Disk Images]

Project Members:


Wiki: Disk Images
Wiki: Installation
Wiki: Tools