Adjust this for your system.

~~~:MS (n-)  #2000 * [ ] times ; ~~~

Ported from http://thecutecuttlefish.org/tmp/morse.fth

~~~'SPEAKER var   :START-SOUND (--)   './dev_dsp file:W file:open !SPEAKER ;   :STOP-SOUND (--)   @SPEAKER file:close ;   :BEEP (cycles--)   START-SOUND   [ '----**** [ @SPEAKER file:write ] s:for-each ] times   STOP-SOUND ;     :- #45 c:put #500 BEEP #50 MS  ; (Long :. #46 c:put #100 BEEP #10 MS  ; (Short   :P  #50 MS      ; (Pause :LP #500 MS sp  ; (Long_Pause   :A? dup $A eq? [ . - P     ] if ; :B? dup $B eq? [ - . . . P ] if ; :C? dup $C eq? [ - . - . P ] if ; :D? dup $D eq? [ - . . P   ] if ; :E? dup $E eq? [ . P       ] if ; :F? dup $F eq? [ . . - . P ] if ; :G? dup $G eq? [ - - . P   ] if ; :H? dup $H eq? [ . . . . P ] if ; :I? dup $I eq? [ . . P     ] if ; :J? dup $J eq? [ . - - - P ] if ; :K? dup $K eq? [ - . - P   ] if ; :L? dup $L eq? [ . - . . P ] if ; :M? dup $M eq? [ - - P     ] if ; :N? dup $N eq? [ - . P     ] if ; :O? dup $O eq? [ - - - P   ] if ; :P? dup $P eq? [ . - - . P ] if ; :Q? dup $Q eq? [ - - . - P ] if ; :R? dup $R eq? [ . - . P   ] if ; :S? dup $S eq? [ . . . P   ] if ; :T? dup $T eq? [ - P       ] if ; :U? dup $U eq? [ . . - P   ] if ; :V? dup $V eq? [ . . . - P ] if ; :W? dup $W eq? [ . - - P   ] if ; :X? dup $X eq? [ - . . - P ] if ; :Y? dup $Y eq? [ - . - - P ] if ; :Z? dup $Z eq? [ - - . . P ] if ;   :SP? dup #32 eq? [ LP ] if ;   :1? dup $1 eq? [ . - - - - P ] if ; :2? dup $2 eq? [ . . - - - P ] if ; :3? dup $3 eq? [ . . . - - P ] if ; :4? dup $4 eq? [ . . . . - P ] if ; :5? dup $5 eq? [ . . . . . P ] if ; :6? dup $6 eq? [ - . . . . P ] if ; :7? dup $7 eq? [ - - . . . P ] if ; :8? dup $8 eq? [ - - - . . P ] if ; :9? dup $9 eq? [ - - - - . P ] if ; :0? dup $0 eq? [ - - - - - P ] if ;     :MORSE (s--)   nl   [     A?     B?     C?     D?     E?     F?     G?     H?     I?     J?     K?     L?     M?     N?     O?     P?     Q?     R?     S?     T?     U?     V?     W?     X?     Y?     Z?           SP?       1?     2?     3?     4?     5?     6?     7?     8?     9?     0? drop ] s:for-each ; ~~~

A simple test case:

```'SOS_OR_NOT MORSE ```