Welcome to ZygomaticZygoma

The Zygomatic system is an alternative computer software system designed to operate any modern sufficiently capable programmable system. The core of the Zygomatic system is the zygoma kernel.

One of the goals of the Zygomatic system is to implement an OS, both internally and at the API level, using idiomatic C++ which includes concepts such as RAII, streams, iterator-based containers and algorithms, and compile-time polymorphism (which is a boon to platform-independant architectures).

Contributions to the Zygomatic system are welcomed and encouraged, and of course we can't get enough people testing and using the system. For more information on obtaining or contributing to the development of the Zygomatic system, visit the project page at SourceForge or use one of the links on the left.

News and Announcements

20 August 2009

Switched from CVS to git for source control. Started work on the synapse layer to allow userland development to be done on an alternative OS kernel such as Linux.

26 April 2006

Paid work has taken precedence over this little ditty, and in this industry crunch time can last for months. Some more functionality may be on the way soon, now that I have an AMD64 machine to play with.

20 December 2005

Replaced some placement new code with class operator new to better encapsulate class-specific operations.

03 August 2005

Recovering after a bizarre skateboarding accident left my leg broken in three places.

I've converted the website to use CSS for a cleaner look and an easier-to-maintain markup. I've been mulling over using a CMS for news, fora, etc., but it seems like overkill right now. First, get the OS booting into multitasking mode and running applications.

I'm still working on rejigging the memory management into a cleaner design, and I'm also thinking about refactoring the multiboot stuff into a separate library so it can be reused elsewhere.

I've also been working hard to get GCC 4.0 (or later) up and running as a cross compiler, but things seem to be fairly broken on that front. Since I don't have a lot of time and the old development environment seems to be working, it's not a priority for me (an takers?).

18 January 2005

Converted logging (post memory manager initialization) to use std::clog instead of some hokey klog() function. Some day I'll make std::cerr work the same way only using a different colour on the screen in VGA mode (although this would make a keen introductory project for some volunteer).

I'm now thinking about rejigging the memory management, since I've never been happy with it, so I can implement proper task management and get a rudimentary init-style process up and running.

17 September 2004

Busy, busy, busy with real life but I did find time to fix the sequencing of object construction during startup so that zygoma no longer crashes as soon as hardware interrupts are enabled. Now on to legacy device detection.

12 August 2004

Added a more detailed snapshots page with instructions.

06 August 2004

Added a blank bootable floppy image file. You will need mtools and bochs to take advantage, but this works in both my Linux and Cygwin development setups. I do

	% make all floppy bochs

and everything just works. Well, as far as booting goes.

28 July 2004

Nighlty source snapshot tarballs are now available.

23 July 2004

Added preliminary support for the Intel IOApic hardware.

24 June 2004

Rewrote the overview page of this website to better expound the design goals of the Zygomatic system.

06 May 2004

Rudimentary interrupt dispatch was easier than I thought. I'm now driven to implement rudimentary task switching, since that's integral to more advanced interrupt dispatch and a prerequisite to microkernel-style device drivers.
If anyone has a desire to start writing device drivers, just join the developer's mailing list and drop us a line.

28 April 2004

C++ exceptions are now working inside the kernel. Magic, I tell you. All focus is now on getting the rudimentry interrupt dispatch working, then we'll roll another source release tarball and start work on some basic device drivers (timer, PS/2 keyboard, buses).

22 April 2004

Implemented a simple static kernel freestore (limited to 16 kB, which should be sufficient for basic testing) and an sbrk() function so that regular C++ new and delete operators are now working.

21 April 2004

Updated the technical documentation.

08 April 2004

Made kernel source snapshot 0.0.1 available for download