bios-OS/readme.md
2026-01-08 10:26:52 +01:00

3.9 KiB
Raw Blame History

Custom BIOS / ROM Project

Projet BIOS / ROM personnalisé


🇬🇧 English

Overview

This project aims to design and implement a PC-compatible BIOS/ROM from scratch, primarily targeted for QEMU emulation, with a strong focus on low-level PC architecture and x86 real-mode assembly programming.

Rather than booting an operating system from disk, the PC starts directly from the ROM into a minimalist graphical interface, using CGA High-Resolution Monochrome (640×200) mode.

The project is intentionally educational, experimental, and minimalist.


Objectives

  • Write a PC-compatible BIOS from scratch

    • No reuse of existing BIOS code
    • Minimal but functional implementation
    • Compatible with QEMU
    • Target architecture: 8086 → 80486
  • Boot directly from ROM

    • No DOS, no bootloader, no disk dependency
    • Execution starts at reset vector (F000:FFF0)
    • ROM is responsible for full system initialization
  • Provide a minimalist graphical interface

    • Graphics mode: CGA High-Resolution Monochrome (640×200)
    • Direct video memory access
    • Custom cursor and basic UI primitives
  • Deep understanding of PC architecture

    • CPU reset behavior
    • Memory map (RAM, ROM, EBDA, IVT, BDA)
    • Interrupt Vector Table
    • Hardware initialization (PIC, PIT, keyboard, video)
    • Real-mode execution constraints
  • Improve mastery of x86 assembly

    • Real-mode x86 assembly (8086-compatible)
    • Performance-oriented routines
    • Hardware-near programming
    • Clear separation between hardware-specific drivers and core logic

Non-Goals

  • Full IBM BIOS compatibility
  • Protected mode or modern CPUs
  • Advanced OS services
  • DOS or legacy OS support

This is a learning and exploration project, not a drop-in BIOS replacement.


🇫🇷 Français

Présentation

Ce projet consiste à concevoir et développer un BIOS/ROM PC compatible entièrement écrit “from scratch”, destiné principalement à lémulation QEMU, avec pour objectif principal lapprentissage approfondi de larchitecture PC et de la programmation assembleur x86 en mode réel.

Au lieu de charger un système dexploitation depuis un disque, le PC démarre directement depuis la ROM vers une interface graphique minimaliste, utilisant le mode CGA Haute Résolution Monochrome (640×200).

Le projet est volontairement éducatif, expérimental et minimaliste.


Objectifs

  • Écrire un BIOS PC depuis zéro

    • Aucun code BIOS existant réutilisé
    • Implémentation minimale mais fonctionnelle
    • Compatible avec QEMU
    • Architecture ciblée : 8086 jusquau 486
  • Démarrer directement depuis la ROM

    • Sans DOS, sans bootloader, sans disque
    • Exécution depuis le vecteur de reset (F000:FFF0)
    • La ROM initialise entièrement la machine
  • Fournir une interface graphique minimaliste

    • Mode graphique : CGA Hi-Res Monochrome (640×200)
    • Accès direct à la mémoire vidéo
    • Curseur personnalisé et primitives graphiques simples
  • Approfondir la compréhension de larchitecture PC

    • Séquence de reset CPU
    • Cartographie mémoire (RAM, ROM, EBDA, IVT, BDA)
    • Table des vecteurs dinterruptions
    • Initialisation matérielle (PIC, PIT, clavier, vidéo)
    • Contraintes du mode réel
  • Perfectionner la maîtrise de lassembleur

    • Assembleur x86 en mode réel (compatible 8086)
    • Routines optimisées pour la performance
    • Programmation proche du matériel
    • Séparation claire entre cœur du BIOS et drivers matériels

Hors périmètre

  • Compatibilité BIOS IBM complète
  • Mode protégé ou CPU modernes
  • Services système avancés
  • Support DOS ou OS legacy

Ce projet est avant tout un laboratoire dapprentissage et dexploration, et non un BIOS de production.


Status

🚧 Work in progress
Designed for experimentation, learning, and documentation.