lib LibBootstrap
@[Packed]
struct StartInfo
multiboot_ptr : UInt32
end_of_kernel : UInt32
end
end
fun kearly(info_ptr: LibBootstrap::StartInfo*)
info = info_ptr.value
end
def clear_screen
video_memory = Pointer(UInt8).new(0xB8000)
screen_size = 80 * 25
i = 0
while i < screen_size
video_memory[2 * i] = ' '.ord.to_u8
video_memory[2 * i + 1] = 0x07_u8
i += 1
end
end
def clear_screen_asm
asm(%(
mov %ax, 0xB8000
mov %es, %ax
xor %di, %di
mov %cx, 80 * 25
mov %al, ' '
mov %ah, 0x07
rep stosw
))
end
fun kmain
address = Pointer(UInt8).new(0xb8000)
message = "[CrystalOS Kernel] Hello from Crystal\n"
clear_screen
i = 0
while i < message.size
address.value = message[i].to_u8
address += 1
address.value = 0xA0.to_u8
address += 1
i += 1
end
while true
end
end