initial commit
This commit is contained in:
commit
08f66b73e1
10 changed files with 783 additions and 0 deletions
123
readme.md
Normal file
123
readme.md
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
# 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 l’**apprentissage approfondi de l’architecture PC** et de la **programmation assembleur x86 en mode réel**.
|
||||
|
||||
Au lieu de charger un système d’exploitation 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 jusqu’au 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 l’architecture PC**
|
||||
- Séquence de reset CPU
|
||||
- Cartographie mémoire (RAM, ROM, EBDA, IVT, BDA)
|
||||
- Table des vecteurs d’interruptions
|
||||
- Initialisation matérielle (PIC, PIT, clavier, vidéo)
|
||||
- Contraintes du mode réel
|
||||
|
||||
- **Perfectionner la maîtrise de l’assembleur**
|
||||
- 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 d’apprentissage et d’exploration**, et non un BIOS de production.
|
||||
|
||||
---
|
||||
|
||||
### Status
|
||||
|
||||
🚧 **Work in progress**
|
||||
Designed for experimentation, learning, and documentation.
|
||||
|
||||
---
|
||||
Loading…
Reference in a new issue