diff options
Diffstat (limited to 'kernel.cpp')
-rw-r--r-- | kernel.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -1,4 +1,5 @@ #include "acpi.hpp" +#include "ata.hpp" #include "gdt.hpp" #include "idt.hpp" #include "keyboard.hpp" @@ -15,6 +16,24 @@ TextOutput& term = vga; static volatile bool termBusy = false; +void ata_probe(auto bus, ATA::Drive drv, const char *name) +{ + switch (bus.identify(drv)) { + case ATA::Type::ATA: + term.write("ata:"); + term.write(name); + term.write(": ATA drive detected.\n"); + break; + case ATA::Type::ATAPI: + term.write("ata:"); + term.write(name); + term.write(": ATAPI drive detected.\n"); + break; + default: + break; + } +} + void kernel_main(void) { term.write("Clyne's kernel, v2024\n\n"); @@ -40,6 +59,14 @@ void kernel_main(void) tasking_initialize(); term.write("Tasking enabled.\n"); + ATA::Bus<ATA::Primary> bus0; + ATA::Bus<ATA::Secondary> bus1; + + ata_probe(bus0, ATA::Master, "0:0"); + ata_probe(bus0, ATA::Slave, "0:1"); + ata_probe(bus1, ATA::Master, "1:0"); + ata_probe(bus1, ATA::Slave, "1:1"); + for (;;) { const auto ch = keyboard_read(); if (ch) |