Remove console module entirely

Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-12-28 19:46:18 +00:00
parent f022199068
commit bfa3d5b033
4 changed files with 2 additions and 311 deletions

View File

@@ -1,31 +0,0 @@
#ifndef METALOS_KERNEL_CONSOLE_H
#define METALOS_KERNEL_CONSOLE_H
#include <stdint.h>
// Simple framebuffer console for early boot messages
typedef struct {
uint32_t* framebuffer;
uint32_t width;
uint32_t height;
uint32_t pitch;
uint32_t x;
uint32_t y;
uint32_t fg_color;
uint32_t bg_color;
} Console;
// Initialize console with framebuffer
void console_init(uint32_t* fb, uint32_t width, uint32_t height, uint32_t pitch);
// Print functions
void console_putchar(char c);
void console_print(const char* str);
void console_println(const char* str);
void console_clear(void);
// Set colors (RGB)
void console_set_color(uint32_t fg, uint32_t bg);
#endif // METALOS_KERNEL_CONSOLE_H

View File

@@ -1,102 +0,0 @@
/*
* Simple framebuffer console for kernel messages
* Minimal implementation - just enough for debugging
*/
#include "kernel/console.h"
static Console console;
void console_init(uint32_t* fb, uint32_t width, uint32_t height, uint32_t pitch) {
console.framebuffer = fb;
console.width = width;
console.height = height;
console.pitch = pitch;
console.x = 0;
console.y = 0;
console.fg_color = 0xFFFFFFFF; // White
console.bg_color = 0x00000000; // Black
}
void console_clear(void) {
if (!console.framebuffer) return;
for (uint32_t y = 0; y < console.height; y++) {
for (uint32_t x = 0; x < console.width; x++) {
console.framebuffer[y * (console.pitch / 4) + x] = console.bg_color;
}
}
console.x = 0;
console.y = 0;
}
void console_set_color(uint32_t fg, uint32_t bg) {
console.fg_color = fg;
console.bg_color = bg;
}
// Draw a simple 8x8 character (simplified version)
static void draw_char(char c, uint32_t x, uint32_t y) {
if (!console.framebuffer) return;
if (x + 8 > console.width || y + 8 > console.height) return;
// For simplicity, just draw a simple pattern based on character
// In a real implementation, we'd use the font bitmap
for (int cy = 0; cy < 8; cy++) {
for (int cx = 0; cx < 8; cx++) {
uint32_t pixel_x = x + cx;
uint32_t pixel_y = y + cy;
// Simple algorithm: draw pixels based on char value
// This creates a unique pattern for each character
uint8_t pattern = (c + cy) & (1 << cx) ? 0xFF : 0x00;
uint32_t color = pattern ? console.fg_color : console.bg_color;
console.framebuffer[pixel_y * (console.pitch / 4) + pixel_x] = color;
}
}
}
void console_putchar(char c) {
if (!console.framebuffer) return;
if (c == '\n') {
console.x = 0;
console.y += 8;
if (console.y >= console.height) {
console.y = 0; // Wrap around (simplified scrolling)
}
return;
}
if (c == '\r') {
console.x = 0;
return;
}
draw_char(c, console.x, console.y);
console.x += 8;
if (console.x >= console.width) {
console.x = 0;
console.y += 8;
if (console.y >= console.height) {
console.y = 0; // Wrap around
}
}
}
void console_print(const char* str) {
if (!str) return;
while (*str) {
console_putchar(*str);
str++;
}
}
void console_println(const char* str) {
console_print(str);
console_putchar('\n');
}

View File

@@ -7,7 +7,6 @@
*/
#include "kernel/kernel.h"
#include "kernel/console.h"
/*
* Kernel main entry point
@@ -17,55 +16,36 @@
* Just set up hardware and jump to the QT6 app.
*/
void kernel_main(BootInfo* boot_info) {
// Initialize basic console output using framebuffer
console_init(
(uint32_t*)boot_info->framebuffer_base,
boot_info->framebuffer_width,
boot_info->framebuffer_height,
boot_info->framebuffer_pitch
);
console_clear();
console_print("MetalOS v0.1 - MINIMAL\n");
console_print("======================\n\n");
// Suppress unused parameter warning
(void)boot_info;
// TODO: Set up minimal page tables (identity mapped or simple offset)
console_print("[ ] Memory (identity map)\n");
// TODO: Set up IDT with only interrupts we need:
// - Keyboard/mouse (USB or PS/2)
// - Timer (for QT event loop)
// - GPU (if needed)
// That's it! Maybe 5 interrupt handlers total.
console_print("[ ] Interrupts (minimal)\n");
// TODO: Simple memory allocator (bump allocator is fine)
console_print("[ ] Heap (bump allocator)\n");
// TODO: Find RX 6600 GPU via PCI (hardcode vendor/device ID)
console_print("[ ] PCI (find GPU only)\n");
// TODO: Initialize GPU - minimal
// - Enable BAR
// - Init display pipeline
// - Set up framebuffer at 1920x1080 (hardcoded)
console_print("[ ] GPU (RX 6600, 1920x1080)\n");
// TODO: Initialize input
// Try PS/2 first (simpler!)
// Fall back to minimal USB XHCI if needed
console_print("[ ] Input (PS/2 or USB)\n");
// TODO: Jump directly to QT6 Hello World app
// No shell, no init, no fork/exec
// Just: jump to application entry point
console_print("[ ] Jump to QT6 app\n");
console_print("\nBooting app...\n");
// TODO: Replace this with jump to QT6 app
// For now, halt
console_print("ERROR: App not linked yet\n");
while(1) {
__asm__ volatile("hlt");