1 SOCS Hoofdstuk 3 Basisprogrammatuur
2 Inhoud De Vertaler De Voorvertaler Enkel MACRO en MCREINDE directieven Extra macro-directieven De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer
3 Voorvertaler MACRO Som x,y HIA R0, OPT R0, MCREINDE Som a,b DRU STP a:RESGR 1 b:RESGR 1 Voor- vertaler HIA R0,a OPT R0,b DRU STP a:RESGR 1 b:RESGR 1 Bronprogramma (met macro-definities op -oproepen) Bronprogramma (zonder macro-definities en oproepen) Engels: Pre-processor
4 Implementatie Aparte voorvertaler Macro-verwerking = Symboolmanipulatie Code-generatie In andere context gebruiken (bijv. tekst) Ingebouwd in vertaler Betere foutenboodschappen Gebonden aan taal
5 Taken Niets met macro’s te maken kopiëren Macro-definitie onthouden en verwijderen Macro-oproep expanderen Toestanden Kopieermode Definitiemode Expansiemode
6 Enkel MACRO en MCREINDE Enkel MACRO- en MCREINDE-directieven Geen MEVA, MVSP, MSPR, MFOUT, MNTS Plus: Parameters Lokale symbolische adressen
7 Taken Kopieermode Invoer = MACRO definitiemode xyz … (xyz gedefinieerde macro) Argumententabel expansiemode iets anders Gewoon kopiëren Definitiemode Eerste lijn = hoofding Volgende lijn = MCREINDE Einde definitie kopieermode iets anders Toevoegen aan definitie
8 Taken Expansiemode Lichaam definitie lezen Elke lijn Substituties Opzoeken in argumententabel $Etiket Omzetten naar unieke naam _tellerEtiket Omzetten naar unieke naam _tellerEtiket Geneste macro-oproep? Huidig expansie onderbreken Argumententabel Argumententabel Nieuwe expansie Nieuwe expansie Andere gevallen Gewijzigde lijn naar uitvoerbestand
9 Toestandsdiagramma Kopieer- mode Definitie- mode Expansie- mode hoofding andere lijn MACRO MCREINDE andere lijn macro-oproep einde lichaam geneste oproep einde geneste oproep
10 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Kopieer Toestand: Uitvoer-bestand
11 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Kopieer Toestand: Uitvoer-bestand | Macro SOM som v. elem. v. rij
12 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Kopieer Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand Lengte=? Definitie
13 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Definitie Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand Lengte=? SOMResLengte=? A N
14 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Definitie Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand SOMResLengte=? A N SOMResLengte=? A N | … [i]
15 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Definitie Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand SOMResLengte=? A N | … [i] SOMResLengte=? A N | … [i] HIA.w R0,0
16 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Definitie Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand SOMResLengte=? A N | … [i] HIA.w R0,0 SOMResLengte=? A N | … [i] HIA.w R0,0 HIA.w R1,0
17 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Definitie Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand SOMResLengte=? A N | … [i] HIA.w R0,0 HIA.w R1,0 SOMResLengte=? A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+)
18 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Definitie Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand SOMResLengte=? A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) SOMResLengte=? A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1,
19 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Definitie Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand SOMResLengte=? A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, SOMResLengte=? A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus
20 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Definitie Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand SOMResLengte=? A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus SOMResLengte=? A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0,
21 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Definitie Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, Kopieer
22 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Kopieer Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand | Begin van het programma
23 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Kopieer Toestand: | Macro SOM som v. elem. v. rij Uitvoer-bestand | Begin van het programma SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, 3N XA CRes Argumententabel Expansie
24 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Expansie Toestand: | Macro SOM som v. elem. v. rij | Begin van het programma Uitvoer-bestand | C som(i=0..3-1)X[i] SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, 3N XA CRes Argumententabel
25 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Expansie Toestand: | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] Uitvoer-bestand HIA.w R0,0 SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, 3N XA CRes Argumententabel
26 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 Uitvoer-bestand HIA.w R1,0 SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, 3N XA CRes Argumententabel Expansie Toestand:
27 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 Uitvoer-bestand _1lus:OPT R0,X(R1+) SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, 3N XA CRes Argumententabel Expansie Toestand:
28 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus:OPT R0,X(R1+) Uitvoer-bestand VGL.w R1,3 SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, 3N XA CRes Argumententabel Expansie Toestand:
29 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus:OPT R0,X(R1+) VGL.w R1,3 Uitvoer-bestand VSP KL,_1lus SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, 3N XA CRes Argumententabel Expansie Toestand:
30 Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus:OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus Uitvoer-bestand BIG R0,C SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, 3N XA CRes Argumententabel Expansie Toestand: Kopieer
31 SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Kopieer Toestand: | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus:OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus BIG R0,C Uitvoer-bestand HIA R0,C
32 SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Kopieer Toestand: | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus:OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus BIG R0,C HIA R0,C Uitvoer-bestand DRU
33 SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Kopieer Toestand: | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus:OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus BIG R0,C HIA R0,C DRU Uitvoer-bestand STP
34 SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Kopieer Toestand: | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus:OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus BIG R0,C HIA R0,C DRU STP Uitvoer-bestand C:RESGR 1
35 SOMResLengte=7 A N | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, Voorbeeld | Macro SOM som v. elem. v. rij MACRO SOM Res,A,N | (i=0.. -1) [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0, MCREINDE | Begin van het programma SOMC,X,3 HIAR0,C DRU STP C:RESGR 1 X:10;20;30 Kopieer Toestand: | Macro SOM som v. elem. v. rij | Begin van het programma | C som(i=0..3-1)X[i] HIA.w R0,0 HIA.w R1,0 _1lus:OPT R0,X(R1+) VGL.w R1,3 VSP KL,_1lus BIG R0,C HIA R0,C DRU STP C:RESGR 1 Uitvoer-bestand X:10;20;30
36 Extra Macro-directieven MEVA, MVGL, MVSP, MSPR, MFOUT, MNTS Lokale macro-variabelen Globale voorvertaler-variabelen Globale voorvertaler-etiketten
37 Gegevensstructuren Globale variabelentabel = GVT Macro-variabelen In Argumententabel = ALVT Globale etikettentabel = GET Lokale etikettentabel (LET) In macro-definitie- structuur
38 Gegevensstructuren Globale variabelentabel = GVT Macro-variabelen In Argumententabel = ALVT NaamWaarde N10 Debug1 MEVA N,10 MEVA Debug,1
39 Gegevensstructuren Globale variabelentabel = GVT Macro-variabelen In Argumententabel = ALVT NaamWaarde ResC AX N3 NaamWaarde ResC AX N3 N12 MACRO SOM Res,A,N MEVA N1, -1 … MCREINDE MEVA N1, -1
40 Gegevensstructuren Globale etikettentabel = GET Lokale etikettentabel (LET) In macro-definitie- structuur EtiketLijn $WHILE20 $EINDE25 $IF33 … $WHILE:MVGL,0 … $EINDE:MNTS … $IF:MVGL,10
41 Gegevensstructuren Globale etikettentabel = GET Lokale etikettentabel (LET) In macro-definitie- structuur SOMResLengte=7 ALET EtiketLijn N $lus4 | … [i] HIA.w R0,0 HIA.w R1,0 $lus:OPT R0, (R1+) VGL.w R1, VSP KL,$lus BIG R0,
42 Gegevensstructuren 1 Telt macro-oproepen ( GVT) teller 1 Macro-conditie-code ( GVT) MCC 1 / definitieLokale etiketten van de macroLET 1Globale etikettenGET 1 / oproepMacro-argumenten en lokale variabelen ALVT 1Globale voorvertaler variabelenGVT AantalInhoudAfkorting
43 Aanpassingen voorvertaler Definitiemode LET opstellen Kopieermode $etiket: … Aan GET toevoegen Opzoeken in GVT MEVA GVT MNTS MFOUT MSPR GET MVGL MVSP GET Expansiemode Opzoeken in ALVT, ev. In GVT MEVA ALVT of GVT MNTS MFOUT MSPR LET MVGL MVSP LET
44 RAM Van bronprogramma tot Uitvoerbaar programma Module A (met macro’s) Module B (met macro’s) Module A (zonder macro’s) Objectmodule A Voorvertaler Vertaler Binder Uitvoerbaar Programma Module B (zonder macro’s) Objectmodule B Voorvertaler Vertaler Programma- bibliotheek Lader Uitvoerbaar Programma Broncode Machinecode Legende:
45 Macro’s in tekst-context MACRO VERSE ANIMALS,SOUND Old Mac Donald had a farm, E-I-E-I-O And on his farm he had some, E-I-E-I-O With a here and a \ there, here a, there a, everywhere a \ Old Mac Donald had a farm, E-I-E-I-O MCREINDE VERSE chicks,cheep VERSE ducks,quack VERSE turkeys,gobble
46 Macro’s in tekst-context Old Mac Donald had a farm, E-I-E-I-O And on his farm he had some chicks E-I-E-I-O With a cheep cheep here and a cheep cheep there, here a cheep, there a cheep, everywhere a cheep \ cheep Old Mac Donald had a farm, E-I-E-I-O And on his farm he had some ducks E-I-E-I-O With a quack quack here and a quack quack there, here a quack, there a quack, everywhere a quack \ quack Old Mac Donald had a farm, E-I-E-I-O …
47 Macro’s in tekst-context MACRO VERSE ANIMALS,SOUND Old Mac Donald had a farm, E-I-E-I-O And on his farm he had some, E-I-E-I-O With a here and a \ there, here a, there a, everywhere a \ Old Mac Donald had a farm, E-I-E-I-O MCREINDE VERSE chicks,cheep VERSE ducks,quack VERSE turkeys,gobble Indien ingebouwd in vertaler: *** fout *** Old: \ onbestaande functiecode
48 Cursustekst Hoofdstuk 3: pag. 23 pag. 44 Hoofdstuk 3 volledig gezien: pag. 1 pag. 93