Please sign in to access this page

PZOS

PZOS

14 devlogs
61h 32m
Created by William Ma

Amateur x86-64 (for now) kernel built from scratch, booted using Limine.

Timeline

Ship 1

0 payouts of shell 0 shells

William Ma

6 days ago

William Ma Covers 14 devlogs and 61h 32m

Add a proper README in preparation for ship. Also fixed a bug where booting with low memory would triple fault.

Update attachment

Added a basic terminal application. Currently it doesn't have very many applications but the text handling works quite well, with history and line wrap handling. I had to implement more ANSI sequences in my TTY subsystem in order to achieve this, as well as fixing some bugs in the stdlib.

Implemented a PS/2 keyboard driver, from interfacing with the 8042 controller to translating scancodes to keycodes and ASCII codepoints. Currently the last step of translation from keycodes to ASCII is janky and is not pushed to Github.

Added basic UEFI and ACPI table location and parsing. Added an HHDM to simplify memory management when reading system tables and fixed a minor printf bug. Lots of debugging for the paging changes and reading specifications made this take way longer than I thought it would.

Update attachment

Spent a whole ton of time debugging why printing caused my laptop to triple fault. Turns out it failed when trying to write on the bottom 1/4 of the screen since the paging logic had UB due to not zeroing allocated memory for page directories. It was especially annoying to debug since it worked fine on my VM and I had no way of getting information from the system because the printing was broken.

Also added buffering during parsing of ANSI escape sequences so now colors actually work on the real screen and slightly sped up the clock synchronization process.

Update attachment

Implemented TSC as a clocksource, calibrated using the PIT or using CPUID enumerated values if possible. Added (roughly) standardized logging functionality with pretty printing and timestamps.

Update attachment

Refined VMA management and added basic memory allocators

Update attachment

Refine virtual memory layout and fix page tables. Also added primitive VMA allocation and deletion with a basic bump heap allocator.

Update attachment

Fix triple fault, fix/standardize standard lib. Add further documentation on address space structure

Update attachment

Fixed page (un)mapping and finished memory reclaiming. It triple faults on my laptop but it works fine on qemu so something's clearly wrong but debugging is a nightmare.

Update attachment

WIP: Attempted to fix page (un)mapping and reclaim bootloader memory. Unfortunately there seem to be many bugs with (un)mapping (probably TLB related)

Update attachment

Added page mapping functions and mapped memory map pointers

Update attachment
sugo14 sugo14 about 2 months ago
so cool!!!!

Not a GCC bug but an INCBIN bug. Created and debugged new page tables.

Update attachment
William Ma William Ma about 1 month ago
https://github.com/graphitemaster/incbin/issues/71

Wrote page allocator and half done replacing Limine's HHDM page tables. Perhaps found a GCC bug??

Update attachment