starting VGA driver
This commit is contained in:
parent
fcb968beb2
commit
0775fe6193
13 changed files with 1528 additions and 682 deletions
|
|
@ -10,11 +10,13 @@ The processor starts in Real Mode, addressing 1 MB of memory.
|
|||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| **`0x00000`** | **`0x003FF`** | 1 KB | **IVT** (Interrupt Vector Table) | `0x0000` | `memory.asm` |
|
||||
| **`0x00400`** | **`0x004FF`** | 256 B | **BDA** (BIOS Data Area) Standard | `0x0040` | `memory.asm` |
|
||||
| **`0x00500`** | **`0x005FF`** | 256 B | **Custom BDA** (Driver Data) | `0x0050` | `memory.asm` |
|
||||
| **`0x00600`** | **`0x00AFF`** | 1.25 KB | **GUI RAM** (Widget Allocation) | `0x0060` | `gui/lib.asm` |
|
||||
| **`0x00B00`** | **`0x07FFF`** | 29 KB | **Free** (Low Memory) | | |
|
||||
| **`0x00500`** | **`0x006FF`** | ~512 B | **Custom BDA** (Driver Data) | `0x0050` | |
|
||||
| **`0x00700`** | **`0x00A6F`** | ~1792 B | **GUI RAM** (Widget Allocation) | **`0x0070`** | `gui/lib-api.asm` |
|
||||
| **`0x00A70`** | **`0x07FFF`** | ~ 29 KB | **Free** (Low Memory) | | |
|
||||
| **`0x08000`** | **`0x17FFF`** | 64 KB | **Stack** (Grows downwards) | `0x0800` | `boot.asm` |
|
||||
| **`0x18000`** | **`0x9FFFF`** | 544 KB | **Free** (Conventional RAM) | | |
|
||||
| **`0x18000`** | **`0x1FFFF`** | 32 KB | **Free** | | |
|
||||
| **`0x20000`** | **`0x2FFFF`** | 64 KB | **Heap** (Dynamic Allocation) | `0x2000` | `memory.asm` |
|
||||
| **`0x30000`** | **`0x9FFFF`** | 448 KB | **Free** (Conventional RAM) | | |
|
||||
| **`0xA0000`** | **`0xAFFFF`** | 64 KB | **VGA RAM** (Graphics Modes) | `0xA000` | `Hardware` |
|
||||
| **`0xB0000`** | **`0xB7FFF`** | 32 KB | **MDA RAM** (Monochrome Text) | `0xB000` | `Hardware` |
|
||||
| **`0xB8000`** | **`0xBFFFF`** | 32 KB | **VRAM** (CGA / MCGA) | `0xB800` | `generic.asm` |
|
||||
|
|
@ -35,11 +37,11 @@ The processor starts in Real Mode, addressing 1 MB of memory.
|
|||
The project separates the standard IBM BDA from its own variables to avoid conflicts with the VGA BIOS loaded at `0xC000`.
|
||||
|
||||
* **Standard BDA (`0040:0000`)**: Used mainly by the VGA BIOS (loaded via QEMU) to store video modes (`0x0049`) and column count (`0x004A`).
|
||||
* **Custom BDA (`0050:0000`)**: Defined by `BDA_DATA_SEG`. Stores driver states:
|
||||
* **Custom BDA (`0050:0000`)**: Defined by `BDA_CUSTOM_SEG`. Stores driver states:
|
||||
* **Mouse**: Input buffer, status, coordinates, background buffer (for cursor).
|
||||
* **Gfx**: Text cursor position, attributes.
|
||||
* **GUI RAM**: Segment `0x0060` (Physical `0x00600`).
|
||||
* **Layout**: Located in low memory (`0x0060`) to avoid any collision with the Stack (`0x0800`).
|
||||
* **GUI RAM**: Segment `0x0063` (Physical `0x00630`).
|
||||
* **Layout**: Located in low memory to avoid any collision with the Stack (`0x0800`).
|
||||
|
||||
#### Stack
|
||||
* **Stack**: Grows downwards from physical address `0xFFFE` (16-bit aligned) of the "Stack Segment" defined by `STACK_SEG`.
|
||||
|
|
@ -71,11 +73,13 @@ Le processeur démarre en mode réel, adressant 1 Mo de mémoire.
|
|||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| **`0x00000`** | **`0x003FF`** | 1 KB | **IVT** (Interrupt Vector Table) | `0x0000` | `memory.asm` |
|
||||
| **`0x00400`** | **`0x004FF`** | 256 B | **BDA** (BIOS Data Area) Standard | `0x0040` | `memory.asm` |
|
||||
| **`0x00500`** | **`0x005FF`** | 256 B | **Custom BDA** (Driver Data) | `0x0050` | `memory.asm` |
|
||||
| **`0x00600`** | **`0x00AFF`** | 1.25 KB | **GUI RAM** (Widget Allocation) | `0x0060` | `gui/lib.asm` |
|
||||
| **`0x00B00`** | **`0x07FFF`** | 29 KB | **Free** (Low Memory) | | |
|
||||
| **`0x00500`** | **`0x006FF`** | ~512 B | **Custom BDA** (Driver Data) | `0x0050` | |
|
||||
| **`0x00700`** | **`0x00A6F`** | ~1792 B | **GUI RAM** (Widget Allocation) | **`0x0070`** | `gui/lib-api.asm` |
|
||||
| **`0x00A70`** | **`0x07FFF`** | ~ 29 KB | **Free** (Low Memory) | | |
|
||||
| **`0x08000`** | **`0x17FFF`** | 64 KB | **Stack** (Grows downwards) | `0x0800` | `boot.asm` |
|
||||
| **`0x18000`** | **`0x9FFFF`** | 544 KB | **Free** (Conventional RAM) | | |
|
||||
| **`0x18000`** | **`0x1FFFF`** | 32 KB | **Libre** | | |
|
||||
| **`0x20000`** | **`0x2FFFF`** | 64 KB | **Heap** (Allocation Dynamique) | `0x2000` | `memory.asm` |
|
||||
| **`0x30000`** | **`0x9FFFF`** | 448 KB | **Libre** (RAM Conventionnelle) | | |
|
||||
| **`0xA0000`** | **`0xAFFFF`** | 64 KB | **VGA RAM** (Graphics Modes) | `0xA000` | `Hardware` |
|
||||
| **`0xB0000`** | **`0xB7FFF`** | 32 KB | **MDA RAM** (Monochrome Text) | `0xB000` | `Hardware` |
|
||||
| **`0xB8000`** | **`0xBFFFF`** | 32 KB | **VRAM** (CGA / MCGA) | `0xB800` | `generic.asm` |
|
||||
|
|
@ -96,11 +100,11 @@ Le processeur démarre en mode réel, adressant 1 Mo de mémoire.
|
|||
Le projet sépare la BDA standard IBM de ses propres variables pour éviter les conflits avec le BIOS VGA chargé en `0xC000`.
|
||||
|
||||
* **BDA Standard (`0040:0000`)** : Utilisée principalement par le BIOS VGA (chargé via QEMU) pour stocker les modes vidéo (`0x0049`) et le nombre de colonnes (`0x004A`).
|
||||
* **Custom BDA (`0050:0000`)** : Définie par `BDA_DATA_SEG`. Stocke l'état des drivers :
|
||||
* **Custom BDA (`0050:0000`)** : Définie par `BDA_CUSTOM_SEG`. Stocke l'état des drivers :
|
||||
* **Souris** : Buffer d'entrée, état, coordonnées, buffer de sauvegarde du fond (pour le curseur).
|
||||
* **Gfx** : Position du curseur texte, attributs.
|
||||
* **GUI RAM** : Segment `0x0060`.
|
||||
* **Organisation** : Située en mémoire basse (`0x0060`) pour éviter toute collision avec la Pile (`0x0800`).
|
||||
* **GUI RAM** : Segment `0x0063` (Physique `0x00630`).
|
||||
* **Organisation** : Située en mémoire basse pour éviter toute collision avec la Pile (`0x0800`).
|
||||
|
||||
#### Stack
|
||||
* **Stack** : Grandit vers le bas depuis l'adresse physique `0xFFFE` (Alignement sur 16 bits) du "stack Segment" défini par `STACK_SEG`.
|
||||
|
|
|
|||
Loading…
Reference in a new issue