Voorbereiding voor een print fucntie.
Nu we een kernel hebben draaien op virtueel adres 3gb en we een gdt hebben gemaakt, doen we de voorbereidingen om de eerste zinnen op het scherm printen. Iets op het scherm zetten is eigenlijk heel gemakkelijk: je schrijft het teken plus het attribuut (achtergrond en voorgrondkleur) naar de juiste plaats in het geheugen. Het videogeheugen bevindt zich op adres 0xB8000. Als je je kernel op 3gb geladen hebt, moet je dus naar adres 0xC00B8000 schrijven ipv van naar adres 0xB8000.
Het attribuut bestaat uit vier bits voor de achtergrondkleur en vier bits voor de voorgrondkleur. De volgende 16 kleuren zijn mogelijk voor de voorgrond- en achtergrondkleur.
Kleur | Waarde (hex.) |
---|---|
ZWART | 0 |
BLAUW | 1 |
GROEN | 2 |
BLAUWGROEN | 3 |
ROOD | 4 |
ROZE | 5 |
BRUIN | 6 |
LICHTGRIJS | 7 |
DONKERGRIJS | 8 |
LICHTBLAUW | 9 |
LICHTGROEN | 10 |
LICHTBLAUWGROEN | 11 |
LICHTROOD | 12 |
LICHTROZE | 13 |
LICHTBRUIN | 14 |
WIT | 15 |
Om het later makkelijker te maken om kleuren te wijzigen maken we voor elke kleur een "#define kleurnaam waarde". Daarna maken we een macro aan waarmee we makkelijk het attribuut kunnen verkrijgen. Deze gaat als volgt: /* Gebruik is als volgt: KLEUR(achtergrond, voorgrondkleur)*/
#define KLEUR(a,b) (char)( ((a&0x0F)<<4) | (b&0x0F) )
0 Reacties:
Een reactie posten
<< Home