OpenLLM-France/wikimedia huggingface dataset:
# Leer jezelf ecologisch tuinieren/Witte muggenorchis

| 1 | 2 | 3 | 4 | 5 | 6 |
Klik op een foto voor een vergroting. Ander gewas? Zoek in het Register.
| Alle families? | Familie: Orchideeën (Orchidaceae) Geslacht: Pseudorchis Soort: Pseudorchis albida |
| Rode lijst. | Deze in het wild voorkomende plant staat op de rode lijst in Nederland en/of België. Dat betekent dat ze kwetsbaar of (bijna) uitgestorven zijn. Zaai of plant ze en verspreid overtollig zaad. |
| Blad: | De bladeren zijn langwerpig tot omgekeerd eirond-lancetvormig, 3-8 cm lang en 1-2 cm breed. De bovenste bladeren aan de stengel zijn kleiner en schutbladachtig. |
| Bloei: Bloem: Meer van dezelfde kleur? | Juni tot augustus. Zwak geurende, geel- tot groenachtig witte bloemen. De bloeiwijze is een cilindrische aar, die dicht met bloemen bezet is. De bloemen zijn 4-5 mm groot. De gekromde 2-3 mm grote sporen bevatten nectar. |
| Vrucht: | De vrucht is een doosvrucht. Het zaad is zeer fijn (stofzaad). Het fijne zaad bevat geen reservevoedsel en kiemt alleen als een wortelschimmel (w:mycorrhiza) het zaad binnen dringt. |
| Hoogte/Lengte: Meer van dezelfde hoogte? | ± 10-30 cm. |
| FAQ: | Vragen en/of antwoorden over de Witte muggenorchis? |
| Maan(d) | Werk | KK | KT | LT | VW | ZD | PA | RA |
| | | | | O | | | | |
# Leer jezelf ecologisch tuinieren/Witte narcis

| 1 | 2 | 3 | 4 |
Klik op een foto voor een vergroting. Ander gewas? Zoek in het Register.
De Witte- of dichtersnarcis komt van nature voor in Zuid-Europa en het westen van de Balkan. De plant komt voor in bergweiden en bossen. De soort is ook als sierplant in cultuur en deze is hier en daar noordelijker ook ingeburgerd.
| Alle families? | Familie: Narcis (Amaryllidaceae) Geslacht: Narcis Soort: Narcissus poeticus |
| Stengel/Tak: | De bloemstengels zijn aan de bovenkant geknikt. |
| Blad: | De drie tot vijf bladeren per plant zijn lintvormig, afgeplat en 20-40 cm lang. |
| Bloei: Bloem: Meer van dezelfde kleur? | April tot juni. De bloemen zijn meestal alleenstaand. De bloembuis is 2-3 cm lang en groenachtig. De zes bloemdekbladeren zijn wit, uitgespreid en 1,5-3 cm lang. De bijkroon is schotelvormig, 1-3 mm lang en geel met een rode, gefranjerde rand. |
| Vrucht: | De vruchten zijn doosvruchten. |
| Hoogte/Lengte: Meer van dezelfde hoogte? | ± 30-60 cm. |
| FAQ: | Vragen en/of antwoorden over de Witte narcis? |
| Maan(d) | Werk | KK | KT | LT | VW | ZD | PA | RA |
| | | | | O | | | | |
# Leer jezelf ecologisch tuinieren/Witte rapunzel

| 1 | 2 | 3 | 4 | 5 |
Klik op een foto voor een vergroting. Ander gewas? Zoek in het Register.
| Alle families? | Familie: Klokjes (Campanulaceae) Geslacht: Rapunzel (geslacht) Soort: Phyteuma spicatum subsp. spicatum |
| Rode lijst. | Deze in het wild voorkomende plant staat op de rode lijst in Nederland en/of België. Dat betekent dat ze kwetsbaar of (bijna) uitgestorven zijn. Zaai of plant ze en verspreid overtollig zaad. |
| Blad: | De breed eironde tot eirond-lancetvormige wortelbladeren zijn in tegenstelling tot bij de Zwartblauwe rapunzel dubbel gezaagd of dubbel gekarteld, maar soms zijn ze ook ongelijk gezaagd of gekarteld. Midden op het blad zitten soms zwarte vlekken. |
| Bloei: Bloem: Meer van dezelfde kleur? | Eind mei tot half juni. Geelwitte, 1 cm lange bloemen, die aan de top vaak groenachtig of iets blauwachtig zijn. De bloemen zitten in een 4-10 cm lange aar, die in het jonge stadium eivormig is, maar later cilindervormig uitgroeit. |
| Hoogte/Lengte: Meer van dezelfde hoogte? | ± 20-80 cm. |
| Bodem: Meer onder dezelfde omstandigheden? | Verklaring van gebruikte afkortingen/symbolen bij zon/water. Grondsoort: Voedselrijke grond in loofbossen en langs beekjes. Water ≈ |
| FAQ: | Vragen en/of antwoorden over de Witte rapunzel? |
| Maan(d) | Werk | KK | KT | LT | VW | ZD | PA | RA |
| | | | | O | | | | |
# Leer jezelf ecologisch tuinieren/Witte snavelbies

| FAQ: | Vragen en/of antwoorden over de Witte snavelbies? |
| Maan(d) | Werk | KK | KT | LT | VW | ZD | PA | RA |
# Leer jezelf ecologisch tuinieren/Witte spar

| 1 | 2 | 3 | 4 | 5 | 6 |
Klik op een foto voor een vergroting. Ander gewas? Zoek in het Register.
De witte spar moet niet verward worden met de blauwspar (Picea pungens). De witte spar wordt ook als kerstboom gebruikt. Een dwergvorm van de witte spar is de cultivar Picea glauca var. albertiana 'Conica', die veel in siertuinen wordt gebruikt. Deze boom heeft juveniele, zachte naalden en een zeer langzame groei van 2-10 cm per jaar. Oudere bomen kunnen snelgroeiende takken met normale naalden ontwikkelen, die weggesnoeid moeten worden als men de dwerggroei wil handhaven.
| Alle families? | Familie: Dennen (Pinaceae) Geslacht: Spar Soort: Picea glauca |
| Stengel/Tak: | De diameter van de stam kan een afmeting van meer dan 1 m bereiken. De bast is dun en geschubd met ronde, 5-10 cm grote schilfers. De kroon van jonge bomen is smal-kegelvormig en wordt bij het ouder worden van de boom cilindrisch. De scheuten zijn bruingelig en bij bomen in het oosten van het groeigebied kaal en bij bomen in het westen vaak behaard. Op de scheut zitten duidelijke bladkussens (pulvini). |
| Blad: | De aan de bovenzijde blauwgroene naalden zijn 1,2-2 cm lang en hebben meerdere dunne lijnen van huidmondjes. De onderzijde is blauwwit met twee brede banden van huidmondjes. De naalden zijn op doorsnede ruitvormig. |
| Groenblijvend. | Deze plant is groenblijvend en/of winterhard. |
| Vrucht: | De hangende, smal cilindrische kegels zijn 3-7 cm lang en in gesloten toestand 1,5 cm breed. Ze hebben dunne, flexibele, 1,5 cm lange schubben. Ze zijn groen tot roodachtig en verkleuren vier tot zes maanden na bevruchting lichtbruin. De zwarte zaden zijn 2-3 mm lang en hebben een slanke, 5-8 mm lange, lichtbruine vleugel. |
| Hoogte/Lengte: Meer van dezelfde hoogte? | ± 1500-3000 cm. |
| FAQ: | Vragen en/of antwoorden over de Witte spar? |
| Maan(d) | Werk | KK | KT | LT | VW | ZD | PA | RA |
# Leer jezelf ecologisch tuinieren/Witte veldbies

| 1 | 2 | 3 |
Klik op een foto voor een vergroting. Ander gewas? Zoek in het Register.
| Alle families? | Familie: Russen (Juncaceae) Geslacht: Veldbies Soort: Luzula luzuloides |
| Wortel: | Vormt kruipende wortelstokken. |
| Blad: | De lichtgroene, glimmende wortelbladeren zijn 3-6 mm breed en evenlang als de stengelbladeren. |
| Bloei: Bloem: Meer van dezelfde kleur? | Mei en juni. Witachtige bloemen, die met twee tot acht bij elkaar zitten aan de tuilvormige bloeiwijze. Het schutblad is langer dan de bloeiwijze. |
| Vrucht: | De vrucht is een doosvrucht met een korte snavel. De zaden zijn 1 mm lang en hebben een zeer klein mierenbroodje, waardoor deze door mieren verspreid worden. |
| Hoogte/Lengte: Meer van dezelfde hoogte? | ± 30-75 cm. |
| Bodem: Meer onder dezelfde omstandigheden? | Verklaring van gebruikte afkortingen/symbolen bij zon/water. Grondsoort: Zure, lemige grond. |
| Goede buren: | Goede buren voor deze plant: Kensoort voor het veldbies-beukenbos (Luzulo luzuloides-Fagetum). |
| FAQ: | Vragen en/of antwoorden over de Witte veldbies? |
| Maan(d) | Werk | KK | KT | LT | VW | ZD | PA | RA |
| | | | | O | | | | |
# Leer jezelf ecologisch tuinieren/Witte munt

| 1 | 2 | 3 | 4 | 5 |
Klik op een foto voor een vergroting. Ander gewas? Zoek in het Register.
| Alle families? | Familie: Lipbloemen (Lamiaceae) Geslacht: Munt Soort: Mentha suaveolens |
| Geschikt als/voor: | bodembedekker. |
| Rode lijst. | Deze in het wild voorkomende plant staat op de rode lijst in Nederland en/of België. Dat betekent dat ze kwetsbaar of (bijna) uitgestorven zijn. Zaai of plant ze en verspreid overtollig zaad. |
| Wortel: | Vormt bovengrondse en ondergrondse uitlopers. |
| Stengel/Tak: | De stengels en de kelken zijn dichtbehaard. |
| Blad: | De blaadjes hebben een appelachtige geur. De zittende, breed-eironde bladeren zijn 3-5 × 2-4 cm groot en hebben een gezaagde rand. De onderkant van het blad is evenals de bovenkant behaard. |
| Bloei: Bloem: Meer van dezelfde kleur? | Juli tot oktober. Lichtlila tot bijna witte bloemen. De bloeiwijze is een schijnaar, die opgebouwd is uit schijnkransen. |
| Vrucht: | De vrucht is een vierdelige splitvrucht. |
| Hoogte/Lengte: Meer van dezelfde hoogte? | ± 25-75 cm. |
| Bodem: Meer onder dezelfde omstandigheden? | Verklaring van gebruikte afkortingen/symbolen bij zon/water. Grondsoort: Voedselrijke, lemige grond. |
| Gebruik: | Keukenkruid. |
| FAQ: | Vragen en/of antwoorden over de Witte munt? |
| Maan(d) | Werk | KK | KT | LT | VW | ZD | PA | RA |
| | | | | O | | | | |
# Leer jezelf ecologisch tuinieren/Witte paardenkastanje

onduidelijke familie
| FAQ: | Vragen en/of antwoorden over de Witte paardenkastanje? |
| Maan(d) | Werk | KK | KT | LT | VW | ZD | PA | RA |
# Leer jezelf ecologisch tuinieren/Witte reseda

Werk in uitvoering. Aan dit artikel wordt voorlopig nog gewerkt. Gelieve het niet te bewerken totdat dit sjabloon is weggehaald.
| 1 | 2 | 3 | 4 | 5 | 6 |
Klik op een foto voor een vergroting. Ander gewas? Zoek in het Register.
| Alle families? | Familie: ? Soort: Reseda alba |
| Geschikt als/voor: | Snijbloem. |
| Lokken: | Deze plant lokt en/of is vatbaar voor Bijen en vlinders. |
| FAQ: | Vragen en/of antwoorden over de Witte reseda? |
| Maan(d) | Werk | KK | KT | LT | VW | ZD | PA | RA |
| | | | | 1 | | | | |
# Programmeren in TI-Basic/Functielijst/int
#### Resultaat

Geeft het grootste geheel getal ≤ een reëel getal of complex getal, uitdrukking, lijst of matrix.

#### Plaatsing

Staat onder: MATH:NUM:5:int(
# Programmeren in TI-Basic/Functielijst/gcd
#### Resultaat

Geeft de grootste gemene deler van waardeA en waardeB; dit kan een reëel getal of een lijst zijn.

#### Plaatsing

Staat onder: MATH:NUM:9:gcd(
# Programmeren in TI-Basic/Functielijst/getKey
#### Resultaat

Geeft de toetscode voor de ingedrukte toets of 0 als er geen toets wordt ingedrukt.

#### Plaatsing

Staat onder: PRGM:I/O:7:getKey
# Programmeren in TI-Basic/Functielijst/dim
#### Syntax

1.
2.
3.
4.

#### Resultaat

1. Geeft de dimensie van lijst.
2. Geeft de dimensie van matrix in de vorm van een lijst.
3. Kent een nieuwe dimensie(lengte) toe aan een nieuwe of bestaande lijstnaam.
4. Kent een nieuwe dimensie toe aan een nieuwe of bestaande matrixnaam.

#### Plaatsing

Staat onder:
1. LIST:OPS:3:dim(
2. MATRIX:MATH:3:dim(
3. LIST:OPS:3:dim(
4. MATRIX:MATH:3:dim(
# Programmeren in TI-Basic/Functielijst/fMax
#### Resultaat

Geef de waarde van variable waar de uitdrukking tussen ondergrens en bovengrens met de opgegeven nauwkeurigheid het lokaal maximum bereikt.

#### Plaatsing

Staat onder: MATH:5:fMax(
# Programmeren in TI-Basic/Functielijst/fMin
#### Resultaat

Geef de waarde van variable waar de uitdrukking tussen ondergrens en bovengrens met de opgegeven nauwkeurigheid het lokaal minimum bereikt.

#### Plaatsing

Staat onder: MATH:5:fMin(
# Programmeren in TI-Basic/Functielijst/fPart
#### Resultaat

Geeft het deel (de delen) na het decimale teken van een reëel of complex getal, uitdrukking, lijst of matrix.

#### Plaatsing

Staat onder: MATH:NUM:4:fPart(
# Programmeren in TI-Basic/Functielijst/iPart
#### Resultaat

Geeft het gehele gedeelte van een reëel of complex getal, uitdrukking, lijst of matrix.

#### Plaatsing

Staat onder: MATH:NUM:3:iPart(
# Programmeren in TI-Basic/Functielijst/cumSum
#### Resultaat

Geeft een lijst van de cumulatieve sommen van de elementen in lijst, te beginnen met het eerste element.

#### Plaatsing

Staat onder: LIST:OPS:6:cumSum(
# Programmeren in TI-Basic/Functielijst/fnInt
#### Resultaat

Geeft de integraal van uitdrukking voor variable, tussen ondergrens en bovengrens met de opgegeven nauwkeurigheid.

#### Plaatsing

Staat onder: MATH:MATH:9:fnInt(
# Ontwerp en bouw een besturingssysteem/Appendix B/Multiboot 0.6.96

De Multiboot Specificatie versie 0.6.96 wordt gebruikt door GRUB, de meest gebruikte bootloader voor hobby besturingssystemen.

## Multiboot Header

De Multiboot Header is een blok gegevens over het besturingssysteem dat wordt gelezen door de bootloader om het besturingssysteem te kunnen laden. Het moet geheel in de eerste 8192 bytes van het kernelbestand staan, en moet beginnen op een 4-byte grens.
| Naam | Offset | Type | Beschrijving |
| magic | 0 | uint32 | Vereist. Altijd 0x1BADB002 |
| flags | 4 | uint32 | Vereist. Zie hieronder. |
| checksum | 8 | uint32 | Vereist. Zie hieronder. |
| header_addr | 12 | uint32 | Optioneel. Fysieke geheugenadres waar de kernel geladen moet worden. |
| load_addr | 16 | uint32 | Optioneel. TODO |
| TODO | TODO | uint32 | TODO |

### Flags

| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | L |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 0 | 0 | 0 | 0 | 0 | V | M | A |
| Naam | Lengte | Beschrijving |
| A | 1 bit | Module uitlijning: 0: Geen uitlijning. 1: Uitlijning op pagina-grenzen (4 KiB). |
| M | 1 bit | Geheugeninformatie: 0: Niet doorgeven aan de kernel. 1: Doorgeven aan de kernel. |
| V | 1 bit | Video mode tabel: 0: Niet doorgeven aan de kernel. 1: Doorgeven aan de kernel. |
| L | 1 bit | Kernel locatieinformatie: 0: Niet aanwezig. Kernel is in ELF formaat. 1: Wel aanwezig. |
# Ontwerp en bouw een besturingssysteem/Blue Screen of Death/De console

Wat verwachten we van de console:
* tekst invoegen op de plaats van de cursor;
* tekstkleur kunnen veranderen.

## Variabelen

Aangezien we te maken hebben met de console, is een pointer naar het consolegeheugen zeker wenselijk. Verder moeten we weten op welke regel en kolom eventuele nieuwe tekst wordt ingevoegd. Ten slotte is het een goed idee om de tekstkleur te bewaren. Het nieuw te maken console.c bestand begint dus zo:
/kernel/src/console.c

## Een karakter afdrukken

Elke string bestaat uit een aantal karakters. Die karakters komen uit de ASCII tekenset, en de meeste zijn zichtbare symbolen. Sommige karakters, zoals de tab en de backspace, moeten speciaal behandeld worden. Schrijf in het console.c bestand een functie om een karakter af te drukken.
/kernel/src/console.c - printKarakter
De functie is static, wat betekent dat de functie alleen geldig is in het bestand waar hij in voorkomt. Om hem overal in het bestand te kunnen gebruiken, moet je hem bovenaan het bestand declareren, als volgt:
/kernel/src/console.c (deel)

## Scherm verschuiven

Als we bij de onderkant van het scherm zijn beland, dan moet de gehele inhoud van het scherm een regel naar boven schuiven. Hiervoor kunnen we de hulpfunctie Memory_Move goed gebruiken.
--- EXTRA --- Waarom is Memory_Copy een minder goede keus? --- EXTRA ---
/kernel/src/console.c - verschuifTekst
Het handigst is om na elk afgedrukt karakter te kijken of het scherm een regel moet opschuiven. Dus we eindigen de voorgaande functie printKarakter als volgt:
/kernel/src/console.c - printKarakter (deel)

## Cursor verplaatsen

Om de cursor te verplaatsen, schrijven we eerst 0x0E naar I/O poort 0x03D4 (VGA controller). De controller verwacht daarna de hoge 8 bits van de nieuwe cursorpositie. Ndat we die hebben doorgegeven op I/O poort 0x03D5, schrijven we 0x0F naar die eerste poort 0x03D4. Als we daarna de lage 8 bits sturen, weet de VGA controller waar we de cursor willen hebben, en wordt de cursor verplaatst.
/kernel/src/console.c - cursorVerplaatsen
--- EXTRA ---

## Cursor verbergen

Schrijf nu zelf de code om de cursor te weergeven en verbergen. Kijk in Appendix B - I/O poorten voor informatie over naar welke poorten je wat moet schrijven. Vergeet niet een declaratie naar de functie toe te voegen bovenaan het codebestand.
/kernel/src/console.c - cursorZichtbaar
--- EXRA ---
TODO: void Video_Initialize void Video_ResetColors void Video_SetColors(byte forecolor, byte backcolor) void Video_PutString(const char* string)
# Ontwerp en bouw een besturingssysteem/Blue Screen of Death/Interrupt Descriptor Table

Het opzetten van een Interrupt Descriptor Table lijkt heel erg op hoe dat ging met de GDT. Behalve een soort pointer naar de nieuwe tabel, definiëren we in idt.h ook weer een structuur voor de descriptors. Opnieuw maken we gebruik van twee globale variabelen.

## Structuur

/kernel/include/idt.h

## Laden van de IDT

Ook voor het laden van de tabel als IDT is een assembler functie nodig, maar deze is iets simpeler:
/kernel/idt.asm
In de C code maken we ook nog een functie die de IDT initialiseerd en laadt:
/kernel/idt.c

## Descriptors laden

Ten slotte is er nog de hierboven genoemde functie nodig om een descriptor in de IDT te laden. Het prototype voor de functie is hieronder gegeven, de implementatie zou je zelf moeten kunnen schrijven. Kijk hiervoor goed naar de theorie en de Idt_Descriptor structuur hierboven.
/kernel/idt.c
# Ontwerp en bouw een besturingssysteem/Appendix B/Paging
## Geen PAE
### CR3

| 31 | 16 |
| 15 | 12 | 11 | 5 | 4 | 3 | 2 | 0 |
| | | | CD | WT | | | |

### 4 KiB pagina's, geen PSE
#### Page Directory Entry

| 31 | 16 |
| 15 | 12 | 11 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| | | | | 0 | | A | CD | WT | U | W | P | P |

#### Page Table Entry

| 31 | 16 |
| 15 | 12 | 11 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| | | | G | PA | D | A | CD | WT | U | W | P | P |

### 4 MiB pagina's, PSE

| 31 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 15 | 14 | 13 | 12 | 11 | | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 0 | 0 | 0 | PA | PA | PA | G | 1 | D | A | CD | WT | U | W | P | P |

### 4 MiB pagina's, PSE-36

| 31 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 15 | 13 | 12 | 11 | | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| | PA | PA | PA | G | 1 | D | A | CD | WT | U | W | P | P | P |

### 4 MiB pagina's, PSE-40

| 31 | 22 | 21 | 20 | | | | 16 |
| | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 15 | 14 | 13 | 12 | 11 | | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| | | PA | PA | PA | G | 1 | D | A | CD | WT | U | W | P | P | P |

## Legacy PAE
### CR3

| 31 | 16 |
| 15 | 5 | 4 | 3 | 2 | 0 |
| | CD | WT | | | |

### 4 KiB pagina's
#### Page-Directory-Pointer Entry

| 63 | | | | | | | | | | | 52 | 51 | | | 48 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 47 | 32 |
| 31 | 16 |
| 15 | 12 | 11 | 9 | 8 | | | 5 | 4 | 3 | 2 | 1 | 0 |
| | | | 0 | 0 | 0 | 0 | CD | WT | 0 | 0 | P | P |

#### Page-Directory Entry

| 63 | 62 | | | | | | | | | | 52 | 51 | | | 48 |
| NX | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 47 | 32 |
| 31 | 16 |
| 15 | 12 | 11 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| | | | | 0 | | A | CD | WT | U | W | P | P |

#### Page-Table Entry

| 63 | 62 | | | | | | | | | | 52 | 51 | | | 48 |
| NX | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 47 | 32 |
| 31 | 16 |
| 15 | 12 | 11 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| | | | G | PA | D | A | CD | WT | U | W | P | P |

### 2 MiB pagina's
#### Page-Directory-Pointer Entry

| 63 | | | | | | | | | | | 52 | 51 | | | 48 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 47 | 32 |
| 31 | 16 |
| 15 | 12 | 11 | 9 | 8 | | | 5 | 4 | 3 | 2 | 1 | 0 |
| | | | 0 | 0 | 0 | 0 | CD | WT | 0 | 0 | P | P |

#### Page-Directory Entry

| 63 | 62 | | | | | | | | | | 52 | 51 | | | 48 |
| NX | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 47 | 32 |
| 31 | 21 | 20 | | | | 16 |
| | 0 | 0 | 0 | 0 | 0 | 0 |
| 15 | | 13 | 12 | 11 | | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 0 | 0 | 0 | PA | PA | PA | G | 1 | D | A | CD | WT | U | W | P | P |

## Long-mode PAE
### CR3

| 63 | | | | | | | | | | | 52 | 51 | | | 48 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 47 | 32 |
| 31 | 16 |
| 15 | 12 | 11 | 5 | 4 | 3 | 2 | 0 |
| | | | CD | WT | | | |
# Ontwerp en bouw een besturingssysteem/Blue Screen of Death/Hulpfuncties
## I/O poorten

Om gegevens via de I/O poorten te kunnen versturen, hebben we de outb assembler instructie nodig. En om gegevens te lezen van een I/O poort, gebruiken we de inb instructie. Tussen je C code kan je assembler instructies gebruiken. Dit heet inline assembly. We definieren System_InPortByte en System_OutPortByte in een nieuw bestand system.c.
/kernel/src/system.c
Om er gebruik van te kunnen maken, moet je declaraties van deze functies in een system.h headerbestand zetten.
/kernel/include/system.h
Zet system.c ook in het lijstje na kernel_SOURCES in /kernel/src/makefile.am.
* Tip! Als je in meerdere codebestanden dezelfde headerbestanden gebruikt, dan is de kans groot dat ze dubbel of zelfs nog vaker in de code worden gezet. Om dit te voorkomen definieer je (met #define een constante specifiek voor elk headerbestand. Is die constante al gedefinieerd (te testen met #ifndef), dan sla je de inhoud van het headerbestand over. Zie de code voor system.h voor een voorbeeld.

## Geheugen

Vaak worden er hele stukken van het werkgeheugen gekopieerd, verplaatst of op een bepaalde waarde gezet. Voor deze bewerkingen schrijf je nu zelf geheugenfuncties in een nieuw bestand genaamd memory.c, en maak een bijbehorend memory.h headerbestand in de /kernel/include directory. Zet memory.c ook in het lijstje na kernel_SOURCES in /kernel/src/makefile.am.
De te schrijven functies:
/kernel/src/memory.c
* Als je er niet uit komt met de geheugenfuncties, kijk dan eens hier:
* LINK1
* LINK2
* Linux 1.0 Broncode
* Let wel op eventuele licentievoorwaarden.
# Ontwerp en bouw een besturingssysteem/Blue Screen of Death/Waardes weergeven

Het is zeer handig om getallen in decimaal en hexadecimaal te kunnen afdrukken.
Hiervoor definieren we de functie String_Format in string.c (en de declaratie in string.h):
/kernel/src/string.c
TODO: Wat is va_list, va_start, va_end, va_arg etc... Hulpfuncties?
# Ontwerp en bouw een besturingssysteem/Blue Screen of Death/Global Descriptor Table

Zoals in de theorie aangegeven, moeten we een tabel met drie descriptors maken. Daarna hebben we een soort pointer nodig met de offset van de eerste en laatste byte van de nieuwe tabel, en daarmee de tabel als GDT instellen. De code in gdt.h definieert een structuur voor de pointer en voor de descriptors, en maakt gebruik van twee globale variabelen.
/kernel/include/gdt.h
Daarnaast heb je een functie nodig om de tabel als GDT te laden, en dat kan alleen vanuit assembler:
/kernel/include/gdt.asm
Maak nu nog een functie om een GDT descriptor te laden in de tabel, en roep die functie en de LoadGdt functie aan bij het laden.