Did you know...

The first ever website was made in 1991.

Twinspark OS


Twinspark OS 0.e.r1.1121 - Paging And Frame Allocation Development Updates

Twinspark OS 0.e.r1.1121 - Paging And Frame Allocation Development Updates

Still going on with the programming of the MMU, Paging and Frame Allocation. This will also involve coding Write Protection and switching the NXE bit (Twinspark OS is 64-bit).

PS: Don't worry about the RTC values in the image plus some bunch of Multiboot headers infos. Twinspark OS


Twinspark OS 0.d.r4.1021 - Paging And Frame Allocation Development In Progress

Twinspark OS 0.d.r4.1021 - Paging And Frame Allocation Development In Progress

I am still working on the paging and frame allocation of the operating system ;-)... 


Twinspark OS 0.d.r4.1021 - PIT, Paging And MMU Setup

Twinspark OS 0.d.r4.1021 - PIT, Paging And MMU Setup

I've been working on Twinspark OS' Programmable Interrupt Time (PIT). Seems to work now.

Also, I've began working on its paging. This plus the MMU, might be the most difficult to build. Might take weeks :-( ... Currently, the Page Fault Interrupt is the only one set up plus the usual


Twinspark OS 0d.rw3.1021 - Third Rewrite, Keyboard Detected, Ctypes

Twinspark OS 0d.rw3.1021 - Third Rewrite, Keyboard Detected, Ctypes

We have finally managed to detect the keyboard. The keyboard interrupt is now working perfectly. But still, this is the most basic start since the only keys that we can type in are lowercase ASCII alphabet, numbers and a few symbols, backspace and new lines. The numberlock does not work


Twinspark OS 0d.rw2.0921 - Second Rewrite, Libk To LibTwin, Mem* Functions

Twinspark OS 0d.rw2.0921 - Second Rewrite, Libk To LibTwin, Mem* Functions

Nothing much has happened this week due to being a lot busy with client meetings. But that does not mean that development of the OS has stalled.

What I've managed to do this past week:

I am moving from Libk to LibTwin. LibTwin will be the C library that Twinspark


Twinspark OS 0d.rw1.0921 - First rewrite

Twinspark OS 0d.rw1.0921 - First rewrite

This is the first rewrite of probably many more to come. My main aim with this rewrite was to get the PIC plus the Interrupts to work. Fortunately, things have began to work. It can detect a Breakpoint Fault from a simple "__asm__ volatile("int $0x3");" Assembly statement in the kernel's


Twinspark OS 0c.0921 - Start of Libk Development

Twinspark OS 0c.0921 - Start of Libk Development

I've began writing up Twinspark OS' Libk implementation. Anyone who has been into OS Programming knows that their OS needs to be compiled as freestanding i.e. it should not depend on the system's C libraries for much of its functionality. This usually leaves out critical libraries like Stdlib,


Twinspark OS 0b.0921 - GDT Flushing, IDT and TSS Setup

Twinspark OS 0b.0921 - GDT Flushing, IDT and TSS Setup

I've been working on Twinspark OS's Global Descriptor Tables, Interrupt Descriptor Tables and Task State Segments for the past 1 week. Initialization is now done right after initial kernel booting. But there is still a lot of stuff I need to review here especially the working of the interrupts.


Twinspark OS 0a.0821 - Long Mode Reached

Twinspark OS 0a.0821 - Long Mode Reached

After CPUID checks, Stack setup, Paging, initial GDT and TSS setups, Long Mode checks, Twinspark OS' has finally booted in Long Mode. 


Twinspark OS 0.0a - Bootloader Development

Twinspark OS 0.0a - Bootloader Development

I've began building Twinspark OS' bootloader. Obviously, creating an ASM bootloader for all architectures is tedious so I'll be using GRUB here.

The image is Twinpark booting using GRUB.

Published: 20th, Sunday, Mar, 2022 Last Modified: 20th, Sunday, Mar, 2022