Ontwerp en bouw een besturingssysteem/Foutenopsporing/De console

Uit Wikibooks

De console is op dit moment onze belangrijkste bron van informatie. Voor alles wat er gebeurt zullen we een melding op de console moeten laten zien, en daarvoor is het belangrijk om, behalve vooraf gedefinieerde teksten, ook getallen in decimaal en hexadecimaal te kunnen afdrukken. In dit hoofdstuk behandelen we de console zoals deze na het opstarten van het systeem werkt.

Het consolegeheugen[bewerken]

Het zichtbare deel van de console is 80 karakters (of kolommen) breed en 25 regels hoog, en het wordt aangestuurd door de VGA controller. De VGA controller heeft een deel van het geheugen gereserveerd (vanaf 0xB8000) voor de weer te geven tekst. Helaas is daarmee alles gezegd; we zullen zelf moeten zorgen dat als we aan het einde van het scherm zijn, de tekst naar boven springt.

Elk karakter in het consolegeheugen is twee bytes groot. Het consolegeheugen is dus 80 kolommen * 25 regels * 2 bytes = 4000 bytes groot. Elke volgende regel staat na de voorgaande regel in het consolegeheugen. Dus de tweede regel begint op consolegeheugenadres 0xB8000 + 1 regel * 80 kolommen * 2 bytes = 0xB80A0. Kortom, het karakter op een bepaalde regel en kolom staat op het volgende geheugenadres:

(de eerste regel is , de eerste kolom is )


De karakters[bewerken]

 
15  1211  8
AchtergrondVoorgrond
7      0
Karakter
 


Elk karakter in het consolegeheugen is 16 bits. De laagste 8 bits bepalen het karakter. Standaard is de ASCII tekenset actief. De hoogste 4 bits bepalen de achtergrondkleur, de voorgaande 4 bits de voorgrondkleur. Hieronder staat het standaard 16 kleurenpalet:

Waarde Achtergrondkleur Voorgrondkleur
0x0 Zwart
 
Zwart
9ABC2
0x1 Blauw
 
Blauw
9ABC2
0x2 Groen
 
Groen
9ABC2
0x3 Cyaan
 
Cyaan
9ABC2
0x4 Rood
 
Rood
9ABC2
0x5 Magenta
 
Magenta
9ABC2
0x6 Oker
 
Oker
9ABC2
0x7 Licht grijs
 
Licht grijs
9ABC2
Waarde Achtergrondkleur Voorgrondkleur
0x8 Zwart
Tekst
Donkergrijs
9ABC2
0x9 Blauw
Tekst
Lichtblauw
9ABC2
0xA Groen
Tekst
Lichtgroen
9ABC2
0xB Cyaan
Tekst
Licht cyaan
9ABC2
0xC Rood
Tekst
Lichtrood
9ABC2
0xD Magenta
Tekst
Licht magenta
9ABC2
0xE Oker
Tekst
Geel
9ABC2
0xF Licht grijs
Tekst
Wit
9ABC2

Extra (appendix?): Hoe het kleurenpalet te veranderen? Hoe de letters aan te passen?

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.