summaryrefslogtreecommitdiffstats
path: root/modules/morse/morse.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules/morse/morse.sh')
-rwxr-xr-xmodules/morse/morse.sh160
1 files changed, 0 insertions, 160 deletions
diff --git a/modules/morse/morse.sh b/modules/morse/morse.sh
deleted file mode 100755
index c84538ca..00000000
--- a/modules/morse/morse.sh
+++ /dev/null
@@ -1,160 +0,0 @@
-#! /bin/sh
-set -euf
-
-freq=2000
-dit=60
-mode=compile+execute
-
-## plain stupid options "parser"
-while test $# -gt 0; do
- case "$1" in
- (-l) dit=$2; shift 2;;
- (-f) freq=$2; shift 2;;
- (-c) mode=compile; shift 1;;
- (-x) mode=execute; shift 1;;
- (*) break 2;;
- esac
-done
-
-# Ein Dah ist dreimal so lang wie ein Dit.
-dah=`echo "$dit * 3" | bc`
-
-## Convert a character to the corresponting morse code.
-## Note: any unknown characters are left unaltered.
-char2morse() {
-tr [a-z] [A-Z] |
-sed '
- # Die Pause zwischen Wörtern beträgt sieben Dits. (1/2)
- s:[[:space:]]\+::g
-
- # Zwischen Buchstaben in einem Wort wird eine Pause von Dah eingeschoben.
- s:[^ ]:& :g
-
- # Die Pause zwischen Wörtern beträgt sieben Dits. (2/2)
- s: : :g
-' |
-sed '
- # Lateinische Buchstaben
- # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang.
- s:A:· −:g
- s:B:− · · ·:g
- s:C:− · − ·:g
- s:D:− · ·:g
- s:E:·:g
- s:F:· · − ·:g
- s:G:− − ·:g
- s:H:· · · ·:g
- s:I:· ·:g
- s:J:· − − −:g
- s:K:− · −:g
- s:L:· − · ·:g
- s:M:− −:g
- s:N:− ·:g
- s:O:− − −:g
- s:P:· − − ·:g
- s:Q:− − · −:g
- s:R:· − ·:g
- s:S:· · ·:g
- s:T:−:g
- s:U:· · −:g
- s:V:· · · −:g
- s:W:· − −:g
- s:X:− · · −:g
- s:Y:− · − −:g
- s:Z:− − · ·:g
-' |
-sed '
- # Ziffern
- # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang.
- s:0:− − − − −:g
- s:1:· − − − −:g
- s:2:· · − − −:g
- s:3:· · · − −:g
- s:4:· · · · −:g
- s:5:· · · · ·:g
- s:6:− · · · ·:g
- s:7:− − · · ·:g
- s:8:− − − · ·:g
- s:9:− − − − ·:g
-' |
-sed '
- # TODO Sonder- und Satzzeichen
- #s:À, Å:· − − · −
- #s:Ä:· − · −
- #s:È:· − · · −
- #s:É:· · − · ·
- #s:Ö:− − − ·
- #s:Ü:· · − −
- #s:ß:· · · − − · ·
- #s:CH:− − − −
- #s:Ñ:− − · − −
- #s:. (AAA) · − · − · −
- #s:, (MIM) − − · · − −
- #s:: − − − · · ·
- #s:; − · − · − ·
- #s:? (IMI) · · − − · ·
- #s:- − · · · · −
- #s:_ · · − − · −
- #s:( − · − − ·
- #s:) − · − − · −
- #s:'\'' · − − − − ·
- #s:= − · · · −
- #s:+ · − · − ·
- #s:/ − · · − ·
- #s:@ (AC) · − − · − ·
-' |
-sed '
- # TODO Signale
- # KA
- # (Spruchanfang) − · − · −
- # BT
- # (Pause) − · · · −
- # AR
- # (Spruchende) · − · − ·
- # VE
- # (verstanden) · · · − ·
- # SK
- # (Verkehrsende) · · · − · −
- # SOS
- # (internationaler
- # (See-)Notruf) · · · − − − · · ·
- # HH
- # (Fehler; Irrung;
- # Wiederholung
- # ab letztem
- # vollständigen Wort) · · · · · · · ·
-'
-}
-
-## Convert morse code to beep(1) arguments.
-morse2beeparg() {
-sed "
- s: : -n -f 1 -l $dit:g
- s:·: -n -f $freq -l $dit:g
- s:−: -n -f $freq -l $dah:g
-" |
- sed '
- 1s:^:beep -f 1 -l 1:
-'
-}
-
-compile() {
- char2morse
-}
-
-execute() {
- `morse2beeparg`
-}
-
-## main - process either [any non-option] arguments or stdin.
-if test $# -gt 0; then
- echo "$*"
-else
- cat
-fi |
-case "$mode" in
- (compile) compile;;
- (execute) execute;;
- (compile+execute) compile | execute;;
- (*) echo bad mode: $mode >&2; exit 23;;
-esac