@@ -20,60 +20,27 @@ fun kearly(info_ptr: LibBootstrap::StartInfo*)
end
def clear_screen
- video_memory = Pointer(UInt8).new(0xB8000)
+ video_memory = Pointer(UInt8).new(0xB8000_u64)
screen_size = 80 * 25
-
i = 0
while i < screen_size
- video_memory[2 * i] = ' '.ord.to_u8
- video_memory[2 * i + 1] = 0x07_u8
+ (video_memory + (i * 2)).value = " ".to_unsafe.value
+ (video_memory + (i * 2) + 1).value = 0x07_u8
i += 1
end
end
-# clear screen using asm (intel) instructions
-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
# IDT.enable_interrupts
# kprint "Hello from Fluorite."
- address = Pointer(UInt8).new(0xb8000)
-
- message = "[CrystalOS Kernel] Hello from Crystal\n"
- # puts message
-
+ asm("cli")
clear_screen
- # Loop over each character in the string
- i = 0
- while i < message.size
- # Write the character
- address.value = message[i].to_u8
- address += 1
- # Write the attribute byte
- address.value = 0xA0.to_u8
- address += 1
- i += 1
- end
+ message = "[CrystalOS Kernel] Hello from Crystal\n"
+ puts message
while true
end
-
- # prevent bootloader to take back
- # while true
- # asm("cli")
- # asm("hlt")
- # end
end