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
