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:
1 parent
83d48e09bb
commit
4b57738fe3
15 files changed
+673
-219
No files matched your search
@@ -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`
|
||||
|
||||
Reference in new issue
Block a user