add KePanic instead of splattering _disable __halt everywhere, implement a DMA + interrupts path to the IDE driver, move the dynamic arrays from kmain.c to ke_utils.h, remove weird unicode chars

This commit is contained in:
maksw committed 2026-05-03 22:45:31 +02:00
1 parent 83d48e09bb
commit 4b57738fe3
15 files changed
+673 -219

No files matched your search

+28 -4
View File
@@ -17,10 +17,10 @@ It boots into a shell.
- HAL (screen, keyboard, timer, disk, PCI, APIC)
- preemptive scheduler with priority levels
- processes and threads
- VFS
- VFS with IRPs
- drive-letter paths (`0:\apps\shell.exe`)
- INI-based boot and driver configuration
- partial Win32 layer (kernel32 and user32, far from finished but capable of running simple apps)
- partial Win32 layer (kernel32 and user32, capable of running simple windows apps)
- PE import resolution and dynamic driver loading
## how 2 build
@@ -28,11 +28,33 @@ It boots into a shell.
* open vs x64 build tools
* cd into this directory
* `build.bat`
* open `run.bat`/`rund.bat`
* open `run.bat`/`rund.bat`/`runa.bat`/`runad.bat`
* replace `\\.\PhysicalDrive7` with your thumbdrive partition
* `run.bat`/`rund.bat`
* `run.bat`/`rund.bat`/`runa.bat`/`runad.bat`
* enjoy
## how it looks when built
I have some strong opinions on OS design.
```
efi/boot/
bootx64.efi
boot.ini
hal.dll
colonel.exe
drivers/
drivers.ini
ide.sys
ahci.sys
fat32.sys
syscall.dll
win32.dll
posix.dll
shell.exe
video.exe
```
## driver model
drivers are PE32+ `.sys` files with an entry point preferably named DriverEntry accepting a constant pointer to HAL_API.
@@ -42,6 +64,8 @@ drivers to be loaded have their path stored in `drivers.ini`, split into essenti
a disk driver fills in a `DISK_DRIVER` vtable and calls `IoRegisterDisk(index, &driver)`.
a filesystem driver fills in an `IO_FILESYSTEM` vtable and calls `IoRegisterFilesystem(index, &fs, &vol)`.
currently shipping: AHCI (interrupts), IDE (PIO/DMA), FAT32 (read-only).
## how it boots
1. UEFI loads `boot.ini`, reads `drivers.ini`