|d|i|g|i|t|a|l| pdp11

The Grumpf Operating System

The Grumpf Operating System is a primitive multitasking operating system for the PDP-11 that I started writing on a boring Thursday afternoon. It was developed on an emulation running RSTS/E using the RT-11 utilities and tested on a PDP-11V03, but it should run on any 11 that has the EIS option.

Grumpf currently consists of a system call mechanism (where any program can register a system call that can be called by providing the system call name to a generic system call, a simple memory management (memory partitions for large, named buffers and a simple memory pool allocator for small buffers) and a simple job control facility using a round-robin scheduler. The calling convention used by Grumpf is a combination of the standard PDP-11 calling convention (using the MARK instruction to remove the stack frame after the function call) and the calling convention used by PDP-11 Unix. Any routine can be used as a system call without modifications.

There is a packet oriented I/O system for Grumpf which runs in its own separate job. It provides system calls for registration of devices and connection of interrupt handlers to interrupt vectors. Two drivers, one for the line clock and one for terminals, use these features. The terminal driver is designed to be independent of the underlying hardware, all hardware related stuff has to be done by a special hardware driver for each device. A driver for the KL-11 system console is included.

There is a program to test the terminal driver and two to test the scheduler, some first work on a debugger / command interpreter called Beiss has been done.

To get it running one has to compile and link all the pieces (using grumpf.com) and convert the binaries to something useful:

I wrote this stuff mainly for fun, to get some experience with developing operating systems and try out some crazy ideas I had. Don't expect this to be any useful.

updates:
29-AUG-2005
05-AUG-2005
04-JUN-2005

back

Valid HTML 3.2! Kampagne für sauberes HTML, welches in jedem Browser dargestellt werden kann