fix the return value of LdrLoadImage, make use of __declspec(dllexport), speed up blitting, add dummy TEB, redesign the syscall interface, fix stack alignent so movaps doesn't crash, implement a shitload of win32, implement a simple shell, add bink as video.exe 😎, minor kmain.c cleanup, HAL now supports power-off events, implemented \b in hal_screen.c, fix many deadlocks, add wait for exit event for processes, completely new error codes, small readme changes.

This commit is contained in:
maksw committed 2026-05-03 13:43:29 +02:00
1 parent c13dd99150
commit 7f4052f41c
33 files changed
+6396 -735

No files matched your search

+15 -11
View File
@@ -1,26 +1,26 @@
# an x86-64 kernel
# NT-Lite -- an x86-64 kernel
boots. runs processes. doesn't crash (usually).
Boots. Runs processes. Mimics Windows to some extent.
## what is it?
a 64-bit operating system kernel written from scratch.
A 64-bit operating system kernel written from scratch.
UEFI bootloader, physical and virtual memory managers, preemptive scheduler, HAL, VFS, PE loader, partial Win32 layer.
it boots into a shell.
~20k lines of code.
It boots into a shell.
~20k lines of C and assembly.
## features
- UEFI bootloader with PE loading and base relocation
- physical memory manager (frame stack, O(1) alloc/free)
- UEFI bootloader
- physical memory manager
- virtual memory manager with kernel pool
- HAL (screen, keyboard, timer, disk, PCI, APIC)
- preemptive scheduler with priority levels
- processes and threads
- VFS with FAT32 driver (read-only)
- VFS
- drive-letter paths (`0:\apps\shell.exe`)
- INI-based boot and driver configuration
- partial Win32 layer (kernel32 and user32, far from finished)
- partial Win32 layer (kernel32 and user32, far from finished but capable of running simple apps)
- PE import resolution and dynamic driver loading
## how 2 build
@@ -62,10 +62,14 @@ a filesystem driver fills in an `IO_FILESYSTEM` vtable and calls `IoRegisterFile
drives 0–7. a drive only works if a filesystem registered on it.
## screenshots
![shell.exe playing a video with bink 2](image.png)
## faq
Q: Why?
A: Why not.
A: Why not?
Q: Does it run Doom?
A: Not yet.
@@ -74,7 +78,7 @@ Q: Is the Win32 layer real?
A: Real enough to load binaries that expect it. Not real enough to run Notepad.
Q: Is the scheduler preemptive?
A: Yes.
A: As much as it will ever be.
Q: Will it corrupt my data?
A: How would it? It's read-only.