moonshot

about

how this started

c0 and coff exist because writing a kernel in someone else's language, compiled by someone else's compiler, would leave the most interesting layers of the machine unexplored.

all of this is built by one person, as a hobby, in whatever hours a day leaves over. there is no roadmap and no version of "done" being raced toward. the intent is to keep working on it indefinitely, for as long as it stays interesting, which so far looks like it could be a lifetime.

the operating system

moonshot is an operating system for x86_64, built from scratch, booted through Multiboot and GRUB and run, for now, under QEMU. it is written in c0, a language built for the purpose, and compiled by coff, a toolchain built alongside it.

the kernel is a set of named parts. ring-3 programs reach them through knekt's system calls, the shell and the editors call them directly, and each part drives one piece of hardware.

how the parts of moonshot talk to each other ring-3 programs (utsikt, gnista, lira, hylla) reach the kernel through system calls, and the kernel tasks (skalman, raket, skrift, pensel, jit) call into it directly. knekt connects chrone, jenna and lager, kakel and punkt, klick, jakel and oljud. each of those drives one piece of hardware, the timer, memory, the screen and keyboard, the mouse, the disk and the sound card. ring-3 programs, each in a tavla utsikt browser, glimt gnista game engine lira piano roll hylla file manager kernel tasks, one per window skalman shell raket · skrift · pensel · jit login, editors, repl system calls function calls knekt system calls, interrupts, boot chrone scheduler timer jenna · lager memory memory kakel → punkt windows, then pixels screen keyboard klick mouse driver mouse jakel filesystem disk oljud sound driver sound card
how the parts of moonshot talk to each other. every name links to its page.