IMPLEMENTATION MODULE Languages;

(* Dieses ist eine Deutsch-Implementation für das NarratorDevice.       *)
(* Nach diesem Beispiel lassen sich auch andere Sprachen einbauen       *)
(* bzw. diese Deutsche verbessern und erweitern.                        *)

(* Compiler M2Amiga V4.097d                   © 1991 by Andre Wiethoff  *)

(*$ StackChk:=FALSE *)
(*$ OverflowChk:=FALSE *)
(*$ NilChk:=FALSE *)
(*$ ReturnChk:=FALSE *)
(*$ Volatile:=FALSE *)
(*$ LargeVars:=FALSE *)

FROM SYSTEM         IMPORT ADR,ASSEMBLE;
FROM NarratorDevice IMPORT TranslationPhonems;

VAR t : INTEGER;



(* Diese Struktur ist beliebig erweiterbar. Die erste Zeile gibt        *)
(* die Anzahl der für den jeweiligen Buchstaben benutzten Umsetzungs-   *)
(* vorschriften. Die zweite Zeile enthält Nullwords, worin die Offsets  *)
(* der jeweiligen Buchstaben abgespeichert werden.                      *)
(* Danach werden die möglichen Auftrittsformen in der linken Spalte     *)
(* aufgelistet, während die rechte Spalte die jeweilige Lautschrift     *)
(* dafür enthält. Es müssen sich auf alle Fälle in jeder Spalte acht    *)
(* Zeichen befinden, da ansonsten das System nicht berechnen kann, wo   *)
(* sich ein bestimmtes Element befindet.                                *)
(* Man kann so die deutsche Aussprache immer weiter verbessern, oder    *)
(* aber eine andere Sprache hinzufügen.                                 *)
(* Bei Fragen kann man sich bei mir melden.                             *)


(*$EntryExitCode:=FALSE *)
PROCEDURE german;
BEGIN
  ASSEMBLE(
    (*   A B C D E  F G H I J K L M N O P Q R S  T U V W X Y Z *)
    DC.W 8,1,8,1,10,1,1,1,6,2,1,1,1,1,6,2,1,1,22,6,5,1,1,1,2,1

    DC.W 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

    (*   Ausschnitt   -  Lautschrift   *)
    DC.B "AEU",0,"    ",  "OY",0,"     "
    DC.B "AEH",0,"    ",  "AEAE",0,"   "
    DC.B "AY",0,"     ",  "AY",0,"     "
    DC.B "AI",0,"     ",  "AY",0,"     "
    DC.B "AH",0,"     ",  "AAAA",0,"   "
    DC.B "AU",0,"     ",  "AW",0,"     "
    DC.B "AE",0,"     ",  "AE",0,"     "
    DC.B "A",0,"      ",  "AH",0,"     "

    DC.B "B",0,"      ",  "B",0,"      "

    DC.B "CAE",0,"    ",  "TSAE",0,"   "
    DC.B " CH",0,"    ",  " K",0,"     "
    DC.B "CHS",0,"    ",  "KS",0,"     "
    DC.B "CH",0,"     ",  "/C",0,"     "
    DC.B "CK",0,"     ",  "K",0,"      "
    DC.B "CE",0,"     ",  "TSEH",0,"   "
    DC.B "CI",0,"     ",  "TSIH",0,"   "
    DC.B "C",0,"      ",  "K",0,"      "

    DC.B "D",0,"      ",  "D",0,"      "

    DC.B "EN ",0,"    ",  "IXN ",0,"   "
    DC.B "EL ",0,"    ",  "IXL ",0,"   "
    DC.B "ER ",0,"    ",  "IXR ",0,"   "
    DC.B "ES ",0,"    ",  "IXS ",0,"   "
    DC.B "EI",0,"     ",  "AY",0,"     "
    DC.B "EY",0,"     ",  "AY",0,"     "
    DC.B "EH",0,"     ",  "EH",0,"     "
    DC.B "EU",0,"     ",  "OY",0,"     "
    DC.B "EN",0,"     ",  "EHN",0,"    "
    DC.B "E",0,"      ",  "EH",0,"     "

    DC.B "F",0,"      ",  "F",0,"      "

    DC.B "G",0,"      ",  "G",0,"      "

    DC.B "H",0,"      ",  "/H",0,"     "

    DC.B "IR ",0,"    ",  "IYR ",0,"   "
    DC.B "IA",0,"     ",  "IYAA",0,"   "
    DC.B "IO",0,"     ",  "IYOH",0,"   "
    DC.B "IE",0,"     ",  "IY",0,"     "
    DC.B "IH",0,"     ",  "IY",0,"     "
    DC.B "I",0,"      ",  "IX",0,"     "

    DC.B " J",0,"     ",  " IHY",0,"   "
    DC.B "J",0,"      ",  "X",0,"      "

    DC.B "K",0,"      ",  "K",0,"      "

    DC.B "L",0,"      ",  "L",0,"      "

    DC.B "M",0,"      ",  "M",0,"      "

    DC.B "N",0,"      ",  "N",0,"      "

    DC.B "OEH",0,"    ",  "ER",0,"     "
    DC.B "OE",0,"     ",  "ER",0,"     "
    DC.B "OU",0,"     ",  "UH",0,"     "
    DC.B "OI",0,"     ",  "OY",0,"     "
    DC.B "OH",0,"     ",  "OH",0,"     "
    DC.B "O",0,"      ",  "OH",0,"     "

    DC.B "PH",0,"     ",  "F",0,"      "
    DC.B "P",0,"      ",  "P",0,"      "

    DC.B "Q",0,"      ",  "KV",0,"     "

    DC.B "R",0,"      ",  "R",0,"      "

    DC.B "SCH",0,"    ",  "SH",0,"     "
    DC.B "ST ",0,"    ",  "ST ",0,"    "
    DC.B "SB",0,"     ",  "SB",0,"     "
    DC.B "SD",0,"     ",  "SD",0,"     "
    DC.B "SF",0,"     ",  "SF",0,"     "
    DC.B "SG",0,"     ",  "SG",0,"     "
    DC.B "SH",0,"     ",  "S/H",0,"    "
    DC.B "SJ",0,"     ",  "SY",0,"     "
    DC.B "SK",0,"     ",  "SK",0,"     "
    DC.B "SL",0,"     ",  "SL",0,"     "
    DC.B "SM",0,"     ",  "SM",0,"     "
    DC.B "SN",0,"     ",  "SN",0,"     "
    DC.B "SP",0,"     ",  "SHP",0,"    "
    DC.B "SQ",0,"     ",  "SKV",0,"    "
    DC.B "SR",0,"     ",  "SR",0,"     "
    DC.B "SS",0,"     ",  "S",0,"      "
    DC.B "ST",0,"     ",  "SHT",0,"    "
    DC.B "SV",0,"     ",  "SF",0,"     "
    DC.B "SW",0,"     ",  "SV",0,"     "
    DC.B "SX",0,"     ",  "SKS",0,"    "
    DC.B "SZ",0,"     ",  "STS",0,"    "
    DC.B "S",0,"      ",  "Z",0,"      "

    DC.B "TIO",0,"    ",  "TSIYOH",0," "
    DC.B "TIA",0,"    ",  "TSIYAA",0," "
    DC.B "TZ",0,"     ",  "TS",0,"     "
    DC.B "TH",0,"     ",  "TT",0,"     "
    DC.B "TT",0,"     ",  "TT",0,"     "
    DC.B "T",0,"      ",  "DT",0,"     "

    DC.B "UEH",0,"    ",  "ER",0,"     "
    DC.B "UE",0,"     ",  "ER",0,"     "
    DC.B "UH",0,"     ",  "UW",0,"     "
    DC.B "U ",0,"     ",  "UW ",0,"    "
    DC.B "U",0,"      ",  "UH",0,"     "

    DC.B "V",0,"      ",  "F",0,"      "

    DC.B "W",0,"      ",  "V",0,"      "

    DC.B "X",0,"      ",  "KS",0,"     "

    DC.B "YH",0,"     ",  "IH",0,"     "
    DC.B "Y",0,"      ",  "IH",0,"     "

    DC.B "Z",0,"      ",  "TS",0,"     "
  END);
END german;



BEGIN

  German:=ADR(german);
  FOR t:=66 TO 90 DO (* Offsets berechnen und eintragen *)
    German^.offset[t]:=German^.offset[t-1]+German^.number[t-1];
  END;

END Languages.
