diff --git a/src/boot.asm b/src/boot.asm index 227c76a..7e793fc 100644 --- a/src/boot.asm +++ b/src/boot.asm @@ -88,7 +88,7 @@ puts: ret ;; Data -driveNum: db 3 +driveNum: db 0 counter: db 0 cursor: dw 0 @@ -112,6 +112,8 @@ protected_start: mov esp, ebp ; Perform the far jump + mov al, [driveNum] + push ax jmp KERNEL_LOC ;; GDT diff --git a/src/kernel/disk.c b/src/kernel/disk.c new file mode 100644 index 0000000..f7ba18f --- /dev/null +++ b/src/kernel/disk.c @@ -0,0 +1 @@ +#include "disk.h" diff --git a/src/kernel/disk.h b/src/kernel/disk.h new file mode 100644 index 0000000..b23ec64 --- /dev/null +++ b/src/kernel/disk.h @@ -0,0 +1,8 @@ +#ifndef DISK_H +#define DISK_H + +#include "stdint.h" + +extern uint8_t driveNum; + +#endif diff --git a/src/kernel/entry.asm b/src/kernel/entry.asm index dfb276b..c804803 100644 --- a/src/kernel/entry.asm +++ b/src/kernel/entry.asm @@ -8,9 +8,14 @@ ;; Calls the main function in 'main.c' _start: + pop ax + mov [driveNum], al call main jmp $ ;; If we used cli, hlt we wouldn't have interrupts :/ +[global driveNum] +driveNum: db 0 + ;; ;; --- IDT --- ;; diff --git a/src/kernel/main.c b/src/kernel/main.c index ad48db1..ac8d27b 100644 --- a/src/kernel/main.c +++ b/src/kernel/main.c @@ -5,6 +5,8 @@ #include "keyboard.h" #include "timer.h" #include "system.h" +#include "disk.h" +#include "string.h" void main() { // Interrupts @@ -20,5 +22,8 @@ void main() { clear(0x0f); print("kern.\n\n", 0x0f); + print("Drive: 0x", 0x0f); + print(itoa(driveNum, 16), 0x0f); + putc('\n', 0x00); }