{ (c) 1998 CREEQ <creeq@web.de> }
program MORSEN;
uses Crt;
var c : char;

procedure Punkt;
begin
  sound(2000);
  delay(50);
  nosound;
  delay(100);
end;

procedure Strich;
begin
  sound(2000);
  delay(200);
  nosound;
  delay(100);
end;

procedure Pause;
begin
  delay(500);
end;

procedure Morse(c : char);
begin
  case c of
  'a','A' : begin Punkt; Strich; end;
  'b','B' : begin Strich; Punkt; Punkt; Punkt; end;
  'c','C' : begin Strich; Punkt; Strich; Punkt; end;
  'd','D' : begin Strich; Punkt; Punkt; end;
  'e','E' : begin Punkt; end;
  'f','F' : begin Punkt; Punkt; Strich; Punkt; end;
  'g','G' : begin Strich; Strich; Punkt; end;
  'h','H' : begin Punkt; Punkt; Punkt; Punkt; end;
  'i','I' : begin Punkt; Punkt; end;
  'j','J' : begin Punkt; Strich; Strich; Strich; end;
  'k','K' : begin Strich; Punkt; Strich; end;
  'l','L' : begin Punkt; Strich; Punkt; Punkt; end;
  'm','M' : begin Strich; Strich; end;
  'n','N' : begin Strich; Punkt; end;
  'o','O' : begin Strich; Strich; Strich; end;
  'p','P' : begin Punkt; Strich; Strich; Punkt; end;
  'q','Q' : begin Strich; Strich; Punkt; Strich; end;
  'r','R' : begin Punkt; Strich; Punkt; end;
  's','S' : begin Punkt; Punkt; Punkt; end;
  't','T' : begin Strich; end;
  'u','U' : begin Punkt; Punkt; Strich; end;
  'v','V' : begin Punkt; Punkt; Punkt; Strich; end;
  'w','W' : begin Punkt; Strich; Strich; end;
  'x','X' : begin Strich; Punkt; Punkt; Strich; end;
  'y','Y' : begin Strich; Punkt; Strich; Strich; end;
  'z','Z' : begin Strich; Strich; Punkt; Punkt; end;
  '1' : begin Punkt; Strich; Strich; Strich; Strich; end;
  '2' : begin Punkt; Punkt; Strich; Strich; Strich; end;
  '3' : begin Punkt; Punkt; Punkt; Strich; Strich; end;
  '4' : begin Punkt; Punkt; Punkt; Punkt; Strich; end;
  '5' : begin Punkt; Punkt; Punkt; Punkt; Punkt; end;
  '6' : begin Strich; Punkt; Punkt; Punkt; Punkt; end;
  '7' : begin Strich; Strich; Punkt; Punkt; Punkt; end;
  '8' : begin Strich; Strich; Strich; Punkt; Punkt; end;
  '9' : begin Strich; Strich; Strich; Strich; Punkt; end;
  '0' : begin Strich; Strich; Strich; Strich; Strich; end;
  '.' : begin Punkt; Strich; Punkt; Strich; Punkt; Strich; end;
  ',' : begin Strich; Strich; Punkt; Punkt; Strich; Strich; end;
  ':' : begin Strich; Strich; Strich; Punkt; Punkt; Punkt; end;
  '?' : begin Punkt; Punkt; Strich; Strich; Punkt; Punkt; end;
  '-' : begin Strich; Punkt; Punkt; Punkt; Punkt; Strich; end;
  '/' : begin Strich; Punkt; Punkt; Strich; Punkt; end;
  '(',')' : begin Strich; Punkt; Strich; Strich; Punkt; Strich; end;
  '"' : begin Punkt; Strich; Punkt; Punkt; Strich; Punkt; end;
  '=' : begin Strich; Punkt; Punkt; Punkt; Strich; end;
  '','' : begin Punkt; Strich; Punkt; Strich; end;
  '','' : begin Strich; Strich; Strich; Punkt; end;
  '','' : begin Punkt; Punkt; Strich; Strich; end;
  '<' : begin Punkt; Strich; Punkt; Punkt; Punkt; end;
  '>' : begin Punkt; Punkt; Punkt; Strich; Punkt; end;
  '+' : begin Punkt; Punkt; Punkt; Punkt; Punkt; Punkt; Punkt; Punkt; end;
  '#' : begin Strich; Punkt; Strich; end;
  else pause end;
end;

begin
  clrscr;
  writeln('                              Spezialbefehle:');
  writeln;
  writeln('                                < - Warten');
  writeln('                              > - Verstanden');
  writeln('                                + - Irrung');
  writeln('                            # - Bitte Antworten');
  gotoxy(60,24);
  write('Taste Drcken...');
  readkey;
  clrscr;
  checkeof := true;
  writeln('Gib einen Text ein.  (Ende ^Z)');
  Strich; Punkt; Strich; Punkt; Strich;
  while not eof do
    begin
      read(c);
      if c = 'warten' then halt;
      morse(c);
      pause;
    end;
  Punkt; Punkt; Punkt; Strich; Punkt; Strich;
end.
