langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
42
Task/Morse-code/XPL0/morse-code.xpl0
Normal file
42
Task/Morse-code/XPL0/morse-code.xpl0
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
code ChOut=8, CrLf=9, Sound=39;
|
||||
string 0; \use zero-terminated strings
|
||||
|
||||
proc Morse(Msg); \Output Msg string as audible International Morse code
|
||||
char Msg;
|
||||
char C, D;
|
||||
int Code, Vol;
|
||||
[Code:= [" ", \space
|
||||
".-.-..",".-..-.", " ", "...-..-"," ", \!"#$%
|
||||
"----.", ".----.", "-.--.-", "---..", " ", \&'()*
|
||||
".-.-.", "--..--", "-....-", ".-.-.-", "-..-.", \+,-./
|
||||
"-----", ".----", "..---", "...--", "....-", \01234
|
||||
".....", "-....", "--...", "---..", "----.", \56789
|
||||
"---...","-.-.-.", " ", "-...-", " ", \:;<=>
|
||||
"..--..",".--.-.", \?@
|
||||
".-", "-...", "-.-.", "-..", ".", \ABCDE
|
||||
"..-.", "--.", "....", "..", ".---", \FGHIJ
|
||||
"-.-", ".-..", "--", "-.", "---", \KLMNO
|
||||
".--.", "--.-", ".-.", "...", "-", \PQRST
|
||||
"..-", "...-", ".--", "-..-", "-.--", \UVWXY
|
||||
"--.."]; \Z
|
||||
Sound(0, 1, 1); \sync, for consistent durations
|
||||
repeat C:= Msg(0); Msg:= Msg+1; \get character from message
|
||||
ChOut(0, C); \show the character
|
||||
if C>=^a & C<=^z then C:= C-$20; \convert letters to uppercase
|
||||
Vol:= 1; \assume volume is on (not space)
|
||||
if C>=$21 & C<=^Z then D:= Code(C-$20) \convert characters to code
|
||||
else [D:= Code(0); Vol:= 0]; \space (or unsupported char)
|
||||
repeat Sound(Vol, if D(0)=^- then 3 else 1, 1190000/600); \600 Hz
|
||||
Sound(0, 1, 1); \gap between . and -
|
||||
ChOut(0, D(0)); \show dots and dashes
|
||||
D:= D+1; \next dot or dash for character
|
||||
until D(0) = 0; \string terminator
|
||||
Sound(0, 2, 1); \gap between letters (2+1=3)
|
||||
ChOut(0, ^ ); \show gap
|
||||
until Msg(0) = 0; \string terminator
|
||||
];
|
||||
|
||||
[Morse("SOS SOS SOS "); \something easy to recognize
|
||||
CrLf(0);
|
||||
Morse("Hello, world!");
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue