Tom: So fragt man Leute aus...

Beitrag lesen

Hello,

Lieber Martin,

-. ..- -   -- ..- -
.-- .. .-. -..   ... -.-. .... --- -.   .-- .. . -.. . .-.

"NUT MUT
WIRD SCHON WIEDER"? (hier dekodiert)

*grins*

Das war eins meiner ersten Programme, die ich mal auf einem 8086 geschreiben habe. Muss so ~1984 gewesen sein... Das Programm habe ich noch, aber ich kann es nicht mehr kompilieren und schon gar nicht für Windows oder Linux Grafik.

program morsen (input,output);
uses crt;
var v,i,l,eingabe,alttextattr:byte;
    z:array[0..255] of string[8];
    t,nul:char;
    schleife1:boolean;
{------------------------------------------------}
procedure geschwindigkeit;
begin
repeat
    gotoxy(1,wherey+2);
    write('Bitte Geschwindigkeit eingeben 1..10 ');
    readln(v);
  writeln;
until (v>0) and (v<11);
v:=13-v;
end; {geschwindigkeit}
{------------------------------------------------}
procedure ftasten;
var f:char;
begin
  f:=readkey;
  case ord(f) of
    68:geschwindigkeit;  {F10}
  end;
end; {ftasten}
{------------------------------------------------}
procedure ausgabe(i:byte);
begin
  for l:=1 to length(z[i]) do
  begin
    t:=z[i,l];
    if t = '.' then
    begin
      sound(800);
      delay(11*v);
      nosound;
      delay(12*v);
    end; {t='.'}

if t = '-' then
    begin
      sound(800);
      delay(36*v);
      nosound;
      delay(12*v);
    end; {t='-'}
    if t = ' ' then delay(10*v);
  end;{l}
  if (length(z[i]) > 0) then delay(36*v);
end;{ausgabe}
{------------------------------------------------}
procedure schreiben(i:byte);
var x,y,alttextattr:byte;

begin
case i of
  1..31:;
  else
  begin
    alttextattr:=textattr;
    textattr:=14;
    x:=wherex;
    if (wherey = 25) then
    begin
      writeln;
      writeln;
      gotoxy(x,23)
    end;
    write(z[i]+'  ');
    gotoxy(wherex-3,wherey+1);
    textattr:=alttextattr;
    write(chr(i));
    gotoxy(wherex+2,wherey-1);
    if (wherex > 70) then gotoxy(1,wherey+2);
  end; {case else}
  end; {case}
end; {ausgabe}
{------------------------------------------------}
begin
clrscr;
nosound;
v:=0;
alttextattr:=textattr;
textattr:=7;
z[0]:='';
z[1]:='';
z[2]:='';
z[3]:='';
z[4]:='';
z[5]:='';
z[6]:='';
z[7]:='';
z[8]:='........';
z[9]:='';
z[10]:='';
z[11]:='';
z[12]:='';
z[13]:='';
z[14]:='';
z[15]:='';
z[16]:='';
z[17]:='';
z[18]:='';
z[19]:='';
z[20]:='';
z[21]:='';
z[22]:='';
z[23]:='';
z[24]:='';
z[25]:='';
z[26]:='';
z[27]:='';
z[28]:='';
z[29]:='';
z[30]:='';
z[31]:='';
z[32]:='    ';
z[33]:='';
z[34]:='.-..-.';
z[35]:='';
z[36]:='';
z[37]:='';
z[38]:='';
z[39]:='.-..-.';
z[40]:='-.--.-';
z[41]:='-.--.-';
z[42]:='';
z[43]:='';
z[44]:='';
z[45]:='-...-';
z[46]:='.-.-.-';
z[47]:='--..--';
z[48]:='-----';
z[49]:='.----';
z[50]:='..---';
z[51]:='...--';
z[52]:='....-';
z[53]:='.....';
z[54]:='-....';
z[55]:='--...';
z[56]:='---..';
z[57]:='----.';
z[58]:='---...';
z[59]:='';
z[60]:='';
z[61]:='';
z[62]:='';
z[63]:='..--..';
z[64]:='';
z[65]:='.-';
z[66]:='-...';
z[67]:='-.-.';
z[68]:='-..';
z[69]:='.';
z[70]:='..-.';
z[71]:='--.';
z[72]:='....';
z[73]:='..';
z[74]:='.---';
z[75]:='-.-';
z[76]:='.-..';
z[77]:='--';
z[78]:='-.';
z[79]:='---';
z[80]:='.--.';
z[81]:='--.-';
z[82]:='.-.';
z[83]:='...';
z[84]:='-';
z[85]:='..-';
z[86]:='...-';
z[87]:='.--';
z[88]:='-..-';
z[89]:='-.--';
z[90]:='--..';
z[91]:='';
z[92]:='';
z[93]:='';
z[94]:='';
z[142]:='.-.-'; {Ž}
z[153]:='---.'; {™}
z[154]:='---.'; {š}

writeln('Morsealphabet wird einmal automatisch gegeben');
geschwindigkeit;

for i:= 45 to 90 do
begin
  schreiben(i);
  ausgabe(i);
end;{i}
writeln;
writeln;
writeln;
writeln('Eingabe über die Tastatur ist jetzt möglich');
writeln('Abbruch mit ESC, weiter mit einer anderen Taste');
writeln('Geschwindigkeit ver„ndern mit F10');
repeat until keypressed;
{------------------------------------------------}
clrscr;
schleife1:=true;

while schleife1 do
begin
 eingabe:=ord(readkey);
 case eingabe of
   0:  ftasten;
   27: schleife1:=false;
   13: writeln(chr(13),chr(10),'ABBRUCH nur mit der ESC-Taste',chr(13),chr(10));
   8,32,
   48..90: begin
             schreiben(eingabe);
             ausgabe(eingabe);
           end;
   97..122:begin
             schreiben(eingabe - 32);
             ausgabe(eingabe - 32); {kleine Buchstaben umwandeln}
           end;
   39, {'}
   44, {,}
   46, {.}
   63, {?}
   142, { }
   153, { }
   154: { }begin
             schreiben(eingabe);
             ausgabe(eingabe);
           end;
   129: { }begin
             schreiben(154);
             ausgabe(154);
           end;
   132: { }begin
             schreiben(142);
             ausgabe(142);
           end;
   148: { }begin
             schreiben(153);
             ausgabe(153);
           end;
 end; {case};
end;{schleife}

end.

Vielleicht kann es ja jemand mal durch einen Pascal-Compiler für Windows und für Linux jagen. Ist immer ein netter Zeitvertreib, mal ein paar Morseübungen zu machen. Es gab auch noch eine Version, die die Höraufgaben aus Dateien holt, aber die finde ich jetzt nicht mehr.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de