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
I am still working on the paging and frame allocation of the operating system ;-)...Â
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
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
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
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
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,
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.
After CPUID checks, Stack setup, Paging, initial GDT and TSS setups, Long Mode checks, Twinspark OS' has finally booted in Long Mode.Â
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.
Koi fish are ornamental fish.