In another place, @drogon mentioned OS6, so I went looking for some details:
In Portable Programming (1982) Peter J. L Wallis writes:
The OS6 operating system, developed at the University of Oxford, was an early exercise in the publication of a complete operating system written in a highlevel language. It is written in BCPL…
The system as published supports a single user; it includes a BCPL compiler and a filing system. The interpreter and small amounts of machine-dependent code are written in assembly language for the host machine, initially a CTL Modular One.
Papers published by the OU computing lab, from 1972:
- OS6 - an experimental Operating System for a small computer - Strachey and Stoy, 1972 (PRG08, pp71, two papers)
- The Text of OSPub (PRG-9, pp139)
- The Text of OSPub (Commentary) (PRG-9(c), pp164)
Apparently that’s the first time the full source of an operating system was published. (Reminds me of Minix: Tanenbaum published the full source in a book, as a teaching text. But of course that was much later.)
As noted, OS6 was ported to a B1700 (specifically a B1726 with 4k of writeable control store, which defines a soft machine, and 48k of bit-addressable main memory.) A true proof of portability, surely.
Stoy and Strachey, on the other hand, set out to design a ‘good’ operating system in an already (relatively) well-established language BCPL.
Remarkably, Snow reports deciding on putting an OCODE interpreter into the control store, and arbitrarily deciding on a 24 bit word size for the BCPL data space, and uses a variable-length coding (2 bits length plus some 6 bit syllables) for the OCODE of the BCPL program.