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:
1 parent
c13dd99150
commit
7f4052f41c
33 files changed
+6396
-735
No files matched your search
@@ -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
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||
Reference in new issue
Block a user