Dauug|36 download area

Documentation

  1. A preprint describing the Dauug|36 architecture (early 2024, 76 pages)
  2. Marc’s dissertation (late 2022, 460 pages)
  3. This online documentation

A tarball of this website can be downloaded at the bottom of this page.

Source code: 27 August 2025

This is not an archival version. Future releases will replace it, rather than be offered alongside it.

This version contains a start on some I/O subsystem hardware, which is not far enough along to be interesting to you. But there are numerous improvements that make complex tests such as hardware considerably easier to undertake. The netlist has been split into 29 (or so) files, making sections easier to find. Netlist macros are less abused too, making it easier to grep for specific components.

Another improvement is that the PVIO (paravirtualized I/O) simulator instruction is gone forever. It had horrible semantics anyway. It’s replaced by 20 (or so) new opcodes that make simulator testing that needs I/O much easier. There are also new Python scripts mux and rx that work with the simulator to easily view terminal output from multiple programs within Osmin.

To get this tarball up and going, we recommend an x64 machine running Linux (’mux’ and ’rx’ use abstract Unix sockets, which are fairly Linux-specific), GNU make, GCC (only for the C language), Python 3, and a terminal emulator that supports ANSI escape sequences (gnome-terminal, foot, etc.). Your first few keystrokes might look like:

$ tar xJf cpu-code-cpu-code-20250827.091922.tar.xz
$ cd code
$ make
$ make nr

The first make should build everything you need. The make nr is short for make netsim-regress and fires up the simulator with a bunch of tests. Things are swell if you see a lot of colored output and the last line says that 38 tests ran successfully.

Source code: 20 March 2024

This is not an archival version. Future releases will replace it, rather than be offered alongside it.

This snapshot was taken 20 March 2024. It is not packaged for distribution or well-catalogged, but it has the benefit of being current. This tarball contains source code for the minicomputer netlist, simulation, firmware, virtual machine, assembler, Osmin OS kernel, and associated tools. Its level of completion is a “chapter 8 minicomputer,” that is, a fully-simulated minicomputer in the architecture of the dissertation as described through chapter 8, plus multitasking as foreshadowed in chapter 9. The electrical simulation’s paravirtualized I/O features are also included. Also the new bootloader bootload.a and assembler support for it.

This tarball extends beyond chapter 8, in that it supports cooperative multitasking and preemptive multitasking. But it does not yet have an I/O subsystem or a firmware loader, and there is still a clock skew concern as the dissertation describes.

This implementation has two assemblers: the “old assembler” employed by the virtual machine, and the current level of the new cross assembler, used by netsim by default. All of the VM regression tests work (make vm-regress), and 35 out of 36 netsim regression tests work (make netsim-regress or make nr).

The old assembler is deprecated, but it offers an API that is still needed by the VM. Netsim offers keywords to select either assembler: asm for the new cross assembler, and oldasm for the old assembler. Netsim’s regress/ scripts have been ported to the new cross assembler, and wouldn’t be understood by the old assembler.

Release notes for the Osmin operating system kernel are here.

Source code: 14 January 2023 (with dissertation)

This is an archival version. It will remain available indefinitely, despite being far out of date.

This release is exactly as described in the dissertation. Appendix D contains a guide to the source tree.

This web documentation

Source code for this website—that is, the content management system and markup containing article text—is available in this tarball.

The documentation in this form is distributed on an “as-is” basis as a convenience to you. No timestamp or version control are provided. Formatted offline viewing requires a web server (not just a browser) to coerce the default MIME type to text/html.

Without secure hardware, there is no secure software.