array dtmf-col 1209 freq>div , 1336 freq>div , 1477 freq>div , array dtmf-row 697 freq>div , 770 freq>div , 852 freq>div , 941 freq>div , ( 0 1 2 3 4 5 6 7 8 -3 -1 -2 ) -2 const D* -1 const D# : dtmf ( digit -- f1 f2 ) 1- dup 0 < if abs 3 % 3 swap else 3 /mod then cells dtmf-col + @ swap cells dtmf-row + @ ; : dial ( digit -- ) dtmf 20 arp 7 sleep-csec ; : dialtone [ 350 freq>div lit 440 freq>div lit ] 200 arp ;