morse.pas
Petr "Zweistein" Prokop
{ zwei.stein@worldonline.cz, zweistein.kgb.cz }
program morse;
{
(c) Petr "Zweistein" Prokop
Program Morse :
Vytuk vaŸ morseovky; V programu byla pou§it jenom jedin promØn !
}
uses crt;
var znak:char;
Procedure CurBig;
assembler;
asm
mov ax, 0100h
mov bx, 0000h
mov ch, 7
mov cl, 0
int 0010h
end;
procedure Short;
begin;
Write('.');
Sound(100);
delay(400);
nosound;
delay(400);
end;
procedure Long;
begin;
Write('-');
Sound(50);
delay(800);
nosound;
Delay(400);
end;
procedure Oddel;
begin;
Write('/');
Sound(25);
delay(1000);
nosound;
Delay(400);
end;
Begin;
gotoxy(35,wherey);
writeln('MORSE v1.0');
gotoxy(30,wherey);
writeln('(c) Petr Prokop 1998');
gotoxy(6,wherey);
writeln('Tab-SOS Esc-Konec Enter-Odý dkov n¡ Space-OddØlovaŸ Backspace-Vìmaz');
curbig;
write(chr(4),' ');
repeat
repeat
write('?');
gotoxy(wherex-1,wherey);
znak:=readkey;
until not(znak='');
znak:=upcase(znak);
case znak of
'A':begin;short;long;end;
'B':begin;long;short;short;short;end;
'C':begin;long;short;Long;short;end;
'D':begin;long;short;short;end;
'E':begin;short;end;
'F':begin;short;short;long;short;end;
'G':begin;long;long;short;end;
'H':begin;short;short;short;short;end;
'I':begin;short;short;end;
'J':begin;short;long;long;long;end;
'K':begin;long;short;long;end;
'L':begin;short;long;short;short;end;
'M':begin;long;long;end;
'N':begin;long;short;end;
'O':begin;long;long;long;end;
'P':begin;short;long;long;short;end;
'Q':begin;long;long;short;long;end;
'R':begin;short;long;short;end;
'S':begin;short;short;short;end;
'T':begin;long;end;
'U':begin;short;short;long;end;
'V':begin;short;short;short;long;end;
'X':begin;long;short;short;long;end;
'Y':begin;long;short;long;long;end;
'W':begin;short;long;long;end;
'Z':begin;long;long;short;short;end;
'0':begin;long;long;long;long;long;end;
'1':begin;short;long;long;long;long;end;
'2':begin;short;short;long;long;long;end;
'3':begin;short;short;short;long;long;end;
'4':begin;short;short;short;short;long;end;
'5':begin;short;short;short;short;short;end;
'6':begin;long;short;short;short;short;end;
'7':begin;long;long;short;short;short;end;
'8':begin;long;long;long;short;short;end;
'9':begin;long;long;long;long;short;end;
' ','/':oddel;
'.','*',',':Short;
'-','_','=':long;
end;
case znak of
'A'..'Z','0'..'9':oddel;
end;
case ord(znak) of
27:begin;
writeln(chr(20));
Write ('Konec:');
short;
short;
short;
long;
short;
long;
oddel;
oddel;
end;
13:begin;
Writeln (chr(20));
end;
9:begin;
writeln(chr(20));
write(' S O S :');
short;short;short;
oddel;
long;long;long;
oddel;
short;short;short;
oddel;
writeln(chr(20));
end;
8:begin;
write(' ');
gotoxy(wherex-2,wherey);
write(' ');
gotoxy(wherex-1,wherey);
if wherex=1 then oddel;
End;
end;
if wherex>73 then writeln(chr(20));
until (ord(znak)=27);
writeln;
End.