Ghost Kernel

UI work & website update 2014/11/07, 15:27:02

I've made some major changes to make updating this page a little easier, and also make it a little more beautiful. :)

Single-lined textfields do now work with full mouse-support, also there are checkboxes, labels and some other components. I added layout managers, which are similar to the ones of Java's Swing. Currently I work on shape painting and vectors to get some fast and scalable graphics for checkbox and stuff.


Multiprocessing works! 2014/10/13, 16:25:59

The kernel now supports multiple cores. This required some changes in the scheduling model and the use of locks for critical kernel sections; next will be some optimizations regarding these locking mechanisms to improve overall performance. Then I guess shared libraries will be the next major ToDo.


ACPI, APIC & I/O APIC 2014/10/13, 16:00:00

Today I started implementing multiprocessor support for Ghost. I'm switching from the older 8259 PIC to the new APIC and its counterpart, the I/O APIC. This included writing some logic to read the ACPI tables and get the necessary information from there - bad luck by now if you don't have a computer with ACPI tables or an APIC. I'll have to check if a PIC fallback makes sense.

The BSP's APIC and its timer are already working fine and the I/O APIC setup information is stored. Next I'll configure the I/O APIC so that it lets keyboard/mouse interrupts through, once this is done theres only the wonderful step of making the entire kernel reentrancy-safe left to actually get multiprocessor support. That's gonna be interesting!


Capri & some eye candy 2014/09/29, 16:00:00

Quite some stuff happened in the last month. My development mostly focused on Capri, the build tool used for Ghost (will soon create a subpage here to allow everyone to use it). As it basically has all the features that you would want from a simple script language, the decision was made to publish it as a multi-purpose scripting language, not only as a build tool. More info comes soon.

I rewrote some parts of the window manager, that gives much better performance now. Each windows has its own buffer now, and may request when it needs to be repainted. The log output was reduced and seperated in debug, info and error levels. This makes booting even faster and less verbose, except you need the information. The text rendering was also cleant up a little, and I wrote the first usable text component:

Once the basic components like buttons, combo-boxes, scrollbars and more are implemented, I'll write a UI programming interface to allow programs to create their own interaces. Stay tuned!


First window manager attempts 2014/08/25, 16:00:00

Lately I've been reworking the input & windowing system. A bug that caused the PS/2 driver to send wrong mouse coordinates in movement messages when overflow packets were received is also fixed.

Mouse input is now dispatched into different types of events which then are dispatched and can be handled by the affected components (by now only from within the window manager itself). Currently there are some windows implemented which handle drag events and thereby allow resizing/moving:

The next steps regarding the window manager will be creating an API, so programs can create, manipulate components and draw on the screen.