It's actually running inside of an emulator. The "console" is just the basic BIOS text output.
It does run on real hardware though, but it's a bit harder to make screenshot there and really annoying to reboot the system after making some small changes. QEMU also has a nice feature to log all interrupts which is really really nice for debugging.

And yes, the latest thing I was working on was hardware controller. Well, actually I've been working on two things there; The first thing is an in-kernel dynamic runtime editor which is able to load dynamic libraries into the kernel space and then link/relocate them in there and the second thing are two libraries called libkernel and libio.so which export and abstract part of the kernel functionality.
libio is written in C++ and provides some more abstraction including some basic container classes and a way to create services and service providers and then have the runtime match them (to give an actual example; There is a PCI library, libPCI, which provides a class called PCIDevice which basically abstracts one PCI device and makes access to it easier. And there is a class called PCIProvider which scans the PCI bus and looks for devices there, then it creates a PCIDevice for each found device and the PCIDevice tells the libio runtime that it is looking for a service that matches the properties of the PCI card and if the runtime finds such a service, it will create an instance of it and connect the PCIDevice with the service which then acts as a controller for the device.)

So in theory it's possible to write pretty high level device drivers, because the driver for the actual PCI devices doesn't have to care about finding the correct device on the bus and it doesn't have to re-implement the actual handling of the PCI device. It just needs to implement the functionality specific to the device.
And obviously this isn't only for PCI devices but for arbitrary hardware, but as of now there is only an abstraction library for PCI, because I'm lazy and stuff. The next thing I want to add is support for USB, but that won't make it into 0.3.0 (and 0.4.0 is going to have a VFS as main feature, so it can take some time before I'll actually work on USB stuff)


Shitlord by trade and passion. Graphics programmer at Laminar Research.
I write blog posts at feresignum.com