console vga stuff

This commit is contained in:
2026-07-14 17:40:30 -05:00
parent 454de8feed
commit 6a79a20cf6
15 changed files with 456 additions and 559 deletions

View File

@@ -1,3 +1,4 @@
#include "lib/font.h"
#include "multiboot.h"
#include "interrupts.h"
#include "gdt.h"
@@ -22,6 +23,8 @@
#include <drivers/vga/vga.h>
#include <drivers/cpio/cpio.h>
#include <drivers/devfs/devfs.h>
#include <drivers/serial/serial.h>
#include <drivers/console/console.h>
#include <stddef.h>
#include <stdint.h>
@@ -29,6 +32,8 @@
extern char __kernel_start;
extern char __kernel_end;
#define SERIAL_DBG
extern uint32_t page_directory[1024];
void* kernel_cr3 = page_directory;
@@ -95,37 +100,41 @@ void load_root_program(const char* path) {
flush_tlb();
}
void kmain(uint32_t magic, multiboot_info* mbi) {
void kmain(multiboot_info* mbi) {
disable_interrupts();
vga_init(mbi->framebuffer_addr,
mbi->framebuffer_width,
mbi->framebuffer_height,
mbi->framebuffer_pitch,
mbi->framebuffer_bpp);
if (magic != 0x2BADB002) {
return;
}
init_serial();
// need mmap and fb info
if (!(mbi->flags & (1 << 6)) || !(mbi->flags & (1 << 12))) {
return;
}
return;
uint32_t mmap_virtual_addr = mbi->mmap_addr + 0xC0000000;
init_pmm((void*)mmap_virtual_addr, mbi->mmap_length);
kprintf("memory detection complete. total free memory: %dMB\n", total_free_memory() / 1024 / 1024);
parse_multiboot_modules((uint32_t)mbi);
uint32_t vga_fb_address = mbi->framebuffer_addr;
uint32_t vga_fb_width = mbi->framebuffer_width;
uint32_t vga_fb_height = mbi->framebuffer_height;
uint32_t vga_fb_pitch = mbi->framebuffer_pitch;
uint32_t vga_fb_bpp = mbi->framebuffer_bpp;
init_gdt();
init_idt();
init_pic();
init_pit();
uint32_t mmap_virtual_addr = mbi->mmap_addr + 0xC0000000;
init_pmm((void*)mmap_virtual_addr, mbi->mmap_length);
init_page_tables();
parse_multiboot_modules((uint32_t)mbi);
vga_init(vga_fb_address,
vga_fb_width,
vga_fb_height,
vga_fb_pitch,
vga_fb_bpp);
console_init();
set_console_font("/fonts/cp850-8x16.psf");
kprintf("basic initializations complete\n");