fix(kernel.cr): make sure to write properly to framebuffer
+ 6
- 39
@@ -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