#ifndef KERNEL_H #define KERNEL_H // --- MANUAL TYPE DEFINITIONS (Fixes the "missing header" error) --- typedef unsigned char uint8_t; typedef signed char int8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; typedef unsigned long long uint64_t; // --- MULTIBOOT INFO --- struct multiboot_info { uint32_t flags; uint32_t mem_lower; uint32_t mem_upper; uint32_t boot_device; uint32_t cmdline; uint32_t mods_count; uint32_t mods_addr; uint32_t syms[4]; uint32_t mmap_length; uint32_t mmap_addr; uint32_t drives_length; uint32_t drives_addr; uint32_t config_table; uint32_t boot_loader_name; uint32_t apm_table; uint32_t vbe_control_info; uint32_t vbe_mode_info; uint16_t vbe_mode; uint16_t vbe_interface_seg; uint16_t vbe_interface_off; uint16_t vbe_interface_len; // FRAMEBUFFER INFO uint64_t framebuffer_addr; uint32_t framebuffer_pitch; uint32_t framebuffer_width; uint32_t framebuffer_height; uint8_t framebuffer_bpp; uint8_t framebuffer_type; } __attribute__((packed)); // IO uint8_t inb(uint16_t port); void outb(uint16_t port, uint8_t data); // Graphics void init_graphics(struct multiboot_info* mb_info); void put_pixel(int x, int y, uint32_t color); void draw_rect(int x, int y, int w, int h, uint32_t color); // Mouse void init_mouse(); #endif