Ontwerp en bouw een besturingssysteem/Foutenopsporing/De console: verschil tussen versies

Uit testwiki
Naar navigatie springen Naar zoeken springen
imported>Erik Baas
pallet -> palet
 
(geen verschil)

Huidige versie van 6 mei 2023 11:35

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

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:

Sjabloon:Deelbox

De karakters

Sjabloon:Floatblok

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 Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Zwart Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0x1 Blauw Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Blauw Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0x2 Groen Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Groen Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0x3 Cyaan Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Cyaan Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0x4 Rood Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Rood Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0x5 Magenta Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Magenta Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0x6 Oker Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Oker Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0x7 Licht grijs Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Licht grijs Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
Waarde Achtergrondkleur Voorgrondkleur
0x8 Zwart Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Donkergrijs Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0x9 Blauw Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Lichtblauw Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0xA Groen Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Lichtgroen Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0xB Cyaan Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Licht cyaan Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0xC Rood Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Lichtrood Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0xD Magenta Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Licht magenta Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0xE Oker Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Geel Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak
0xF Licht grijs Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak Wit Sjabloon:Ontwerp en bouw een besturingssysteem/Kleurvak

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