From fe99ea09fe9d2a518b43dfda58da79842eda67af Mon Sep 17 00:00:00 2001 From: andromeda Date: Thu, 5 Mar 2026 20:32:55 +0100 Subject: add kernel stuff, idt, welcome message --- src/lib.rs | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index f942513..18bb65c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,12 +5,11 @@ use core::panic::PanicInfo; #[unsafe(no_mangle)] pub extern "C" fn _start() -> ! { - // 'k' - print("kernel\n"); - loop {} + welcome_serial(); + halt() } -fn print(s: &str) { +fn print_serial(s: &str) { let mut bytes = s.bytes(); while let Some(b) = bytes.next() { unsafe {core::arch::asm!( @@ -20,8 +19,33 @@ fn print(s: &str) { }; } +fn println_serial(s: &str) { + print_serial(s); + print_serial("\n"); +} + +fn welcome_serial() { + print_serial(ANSI_PINK); + println_serial("\nWelcome to Bootle OS"); + println_serial("All code GPL licensed and freely available on git.mtgmonkey.net"); + print_serial("Enjoy your time! Press "); print_serial(ANSI_RED); print_serial("ctrl+a x"); print_serial(ANSI_PINK); println_serial(" to escape Qemu"); + print_serial(ANSI_CLEAR); +} + #[panic_handler] fn panic(_: &PanicInfo) -> ! { - print("panicked"); - loop {} + print_serial("panicked"); + halt() } + +fn halt() -> ! { + unsafe {core::arch::asm!( + "hlt" + )}; + halt() +} + +const ANSI_CLEAR: &str = "\x1b[0m"; +const ANSI_RED: &str = "\x1b[31m"; +const ANSI_PINK: &str = "\x1b[35m"; +const ANSI_GREEN: &str = "\x1b[32m"; -- cgit v1.3.1