summaryrefslogtreecommitdiff
path: root/kernel/src
diff options
context:
space:
mode:
authorVaze <vaze@vaze.dev>2026-05-21 19:08:11 +0200
committerVaze <vaze@vaze.dev>2026-05-21 19:08:11 +0200
commit83e4e3051395c6dcf20ef05682b247f9da479502 (patch)
treea8430dffad7314d3f186149b7ec265dd8dbf9567 /kernel/src
parent4d39a0553ecd639cd94aa3dbe7a8744893ffd3ae (diff)
The kernel should now write the string Hello, World! into a vga-compatible text buffer located at 0xb8000. Now I need to write the bootloader to launch the kernel and ensure this text buffer exists.
Diffstat (limited to 'kernel/src')
-rw-r--r--kernel/src/main.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/src/main.rs b/kernel/src/main.rs
index 397296e..bca5686 100644
--- a/kernel/src/main.rs
+++ b/kernel/src/main.rs
@@ -3,6 +3,8 @@
use core::panic::PanicInfo;
+static HELLO: &[u8] = b"Hello, World!";
+
#[panic_handler]
fn panic(_info: &PanicInfo) -> ! {
loop {}
@@ -10,5 +12,13 @@ fn panic(_info: &PanicInfo) -> ! {
#[unsafe(no_mangle)]
pub extern "C" fn _start() -> ! {
+ let gob_buffer = 0xb8000 as *mut u8;
+
+ for (i, &byte) in HELLO.iter().enumerate() {
+ unsafe {
+ *gob_buffer.offset(i as isize * 2) = byte; // Puts the ASCII char into the buffer
+ *gob_buffer.offset(i as isize * 2 + 1) = 0xb; // Colors it white on black
+ }
+ }
loop {}
}