YeXo - een kernel programmeren

24 maart 2006

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.

















KleurWaarde (hex.)
ZWART0
BLAUW1
GROEN2
BLAUWGROEN3
ROOD4
ROZE5
BRUIN6
LICHTGRIJS7
DONKERGRIJS8
LICHTBLAUW9
LICHTGROEN10
LICHTBLAUWGROEN11
LICHTROOD12
LICHTROZE13
LICHTBRUIN14
WIT15


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) )