Path: utzoo!utgpu!watserv1!watmath!att!rutgers!usc!zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!xanth!cs.odu.edu!Amiga-Request From: Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator) Newsgroups: comp.sources.amiga Subject: v90i207: rexxdial - generate telephone dialing tones, Part01/01 Message-ID: <13126@xanth.cs.odu.edu> Date: 15 Jul 90 21:38:08 GMT Sender: tadguy@cs.odu.edu Reply-To: Arthur Lines: 1226 Approved: tadguy@cs.odu.edu (Tad Guy) X-Mail-Submissions-To: Amiga@cs.odu.edu X-Post-Discussions-To: comp.sys.amiga Submitted-by: Arthur Posting-number: Volume 90, Issue 207 Archive-name: rexx/rexxdial/part01 [ uuencoded executables enclosed ...tad ] This program can dial a telephone number by producing the telephone tones You can use it by holding the telephone receiver next to the right speaker. The program uses the frequencies specified by the CCITT V.19 recommendation The following keys are used: 0 1 2 3 4 5 6 7 8 9 * # A B C D I created it because I don't have a autodial modem and I wanted to use the amiga for dialing. Usage: runback rexxdial Send numbers from within an ARexx program to the 'DialPort' port using the "address 'DialPort' telephonenumber" instruction. By sending the CLOSE command the program can be stopped. This program can be used by eg: VLT and SuperBase Proffesional Author : Arthur van Rooijen 15-April-1990 Note: This program is only tested in the Netherlands at the moment #!/bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'readme' <<'END_OF_FILE' X XThis program can dial a telephone number by producing the telephone tones XYou can use it by holding the telephone receiver next to the right speaker. X XThe program uses the frequencies specified by the CCITT V.19 Xrecommendation XThe following keys are used: X 0 1 2 3 4 5 6 7 8 9 * # A B C D X XI created it because I don't have a autodial modem and I wanted to use Xthe amiga for dialing. X XUsage: runback rexxdial XSend numbers from within an ARexx program to the 'DialPort' port using Xthe "address 'DialPort' telephonenumber" instruction. XBy sending the CLOSE command the program can be stopped. X X X XThis program can be used by eg: VLT and SuperBase Proffesional X XAuthor : Arthur van Rooijen 15-April-1990 X XNote: This program is only tested in the Netherlands at the moment X XCompile: lc -Lm+rexxglue.o rexxdial.c X X X -- X Arthur van Rooijen X X PTT Research Neher Laboratories, Phone : +31 70 3325092 X 2260 AK Leidschendam, Telefax: +31 70 3326477 X P.O. box 42, Telex : 31236 prnl nl X The Netherlands. X X Domain : ap_vrooijen@pttrnl.nl X EARN/BITnet : ROOIJEN@HLSDNL5.BITNET X PSS (DATAnet1) : +204 117035801::ROOIJEN END_OF_FILE if test 1208 -ne `wc -c <'readme'`; then echo shar: \"'readme'\" unpacked with wrong size! fi # end of 'readme' fi if test -f 'rexxdial.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'rexxdial.c'\" else echo shar: Extracting \"'rexxdial.c'\" \(5865 characters\) sed "s/^X//" >'rexxdial.c' <<'END_OF_FILE' X/* X * This program can dial a telephone number by producing the telephone tones X * You can use it by holding the telephone receiver next to the right speaker. X * X * The program uses the frequencies specified by the CCITT V.19 X * recommendation X * X * Usage: runback rexxdial X * Send numbers from within an ARexx program to the 'DialPort' port using X * the "address 'DialPort' telephonenumber" instruction. X * By sending the CLOSE command the program can be stopped. X * X * This program can be used by eg: VLT and SuperBase Proffesional X * X * Author : Arthur van Rooijen 15-April-1990 X * X * Note: This program is only tested in the Netherlands at the moment X * X * Compile: lc -Lm+rexxglue.o rexxdial.c X */ X X#include X#include X#include X#include X#include X#include X#include X#include X X#include X#include X X Xextern struct MsgPort *CreatePort(); X Xvoid sound(UWORD per1, UWORD per2); Xvoid dial(UBYTE digit); XUWORD duration(UWORD frek); Xvoid fill_wave(BYTE *data); X XBYTE chip wave1[16]; X X/* X * Frequencies specified by CCITT V.19 X * X * B1=1209 Hz B2=1336 Hz B3=1477 Hz B4=1633 Hz X * A1=697 Hz 1 2 3 A X * A2=770 Hz 4 5 6 B X * A3=852 Hz 7 8 9 C X * A4=941 Hz * 0 # D X * X * The periods are calculated by the next formula: X * period = 3579545 / ( 16 * frequency) X */ Xstruct { UBYTE key; X UWORD per1, X per2; X}table[]={{'0',238,167}, X {'1',321,185}, X {'2',321,167}, X {'3',321,151}, X {'4',291,185}, X {'5',291,167}, X {'6',291,151}, X {'7',263,185}, X {'8',263,167}, X {'9',263,151}, X {'*',238,185}, X {'#',238,151}, X {'A',321,137}, X {'B',291,137}, X {'C',263,137}, X {'D',238,137}}; X Xstruct IOAudio s0,s1; Xstruct RexxLib *RexxSysBase; X X Xvoid main() X{ X UBYTE sunit=0x06; X int i; X char number[32]; X X struct MsgPort MyPort; X struct RexxMsg *rmptr; X LONG test; X X X RexxSysBase = (struct RexxLib *)OpenLibrary("rexxsyslib.library",0L); X if (RexxSysBase == NULL) { X printf("Bad News -- no REXX library\n"); X exit(0L); X } X X /* X * Open the audio device and create 2 channels for the right X * speaker X */ X if((s0.ioa_Request.io_Message.mn_ReplyPort=CreatePort("s0",0L))==NULL){ X printf("Can't open s0 reply port\n"); X exit(0L); X } X X s0.ioa_Request.io_Message.mn_Node.ln_Pri=10; X s0.ioa_Data=&sunit; X s0.ioa_Length=(ULONG)sizeof(sunit); X X if((OpenDevice(AUDIONAME,0L,&s0,0L))!=NULL){ X printf("Can't open Audio Device\n"); X DeletePort(s0.ioa_Request.io_Message.mn_ReplyPort); X exit(0L); X } X X s0.ioa_Request.io_Command=CMD_WRITE; X s0.ioa_Request.io_Flags=ADIOF_PERVOL; X s0.ioa_Request.io_Unit=(struct Unit *)0x02; X s0.ioa_Data=(UBYTE *)wave1; X s0.ioa_Length=sizeof(wave1); X s0.ioa_Volume=64; X X s1=s0; X if((s1.ioa_Request.io_Message.mn_ReplyPort=CreatePort("s1",0L))==NULL){ X printf("Can't open s1 reply port\n"); X CloseDevice(&s0); X DeletePort(s0.ioa_Request.io_Message.mn_ReplyPort); X exit(FALSE); X } X s1.ioa_Request.io_Unit=(struct Unit *)0x04; X X /* X * Create a SIN wave of 16 samples in chip memory X */ X fill_wave(wave1); X X /* X * Create a message port for the rexx interface and make it public X */ X InitPort(&MyPort,"DialPort"); X AddPort(&MyPort); X X for (;;) { X /* X * Wait for telephone numbers X */ X Wait(1<rm_Args[0]); X test = strcmp(number,"CLOSE"); X X /* X * Send a return code X */ X rmptr->rm_Result1 = 0; X rmptr->rm_Result2 = 0; X ReplyMsg(rmptr); X X /* X * Stop if close command was send X */ X if (test == 0) break; X X /* X * Dial number X */ X for(i=0;i'rexxdial.uu' <<'END_OF_FILE' Xbegin 664 rexxdial XM```#\P`````````$``````````,```D+@``!$D```4(````````#Z0``"0LD+ XM2"0`2?D`````1_D```'T<@`@/````,5@`B;!4"EK`#H!^'!_4H#1K`'X80``PD'K`%Q.KOZ`0>L`7$ZN_HPI0`(PK XM+P`D0"`J`"1G$BQL!/@@0"(H```I00(H3J[_@B(J`"!G&B0\```#[4ZN_^(I, XM0`(X9PKEB"!`)V@`"`"D(&P","\(2&P!]"!H`"0I:``$`CQ.N@;`3KH3V'``! XM8`0@+P`$+P`@+`(@9P0@0$Z03KHA9"QX``0B;`3X3J[^8DZZ!I9*K`(P9QHB' XM+`(X9P1.KO_<+'@`!$ZN_WPB;`(P3J[^AB`?+FP"-$YU<&1@M$/Z`!!P`$ZNZ XM_=@I0`3X9^Q.=61O0```LA.MA``+%].=3(\_W9@X#(\_SI@VC(\F XM_HQ@U#(\_IY@SC(\_J1@R#(\_T9@PC(\_T!@O#(\_D1@MC(\_P1@L#(\_OY@= XMJC(\_OA@I#(\_O)@GC(\_NQ@F#(\_N!@DC(\_H9@C#(\_IA@AG*"8"`R//\H- XM8!HR//]D8!0R//Y08`YRCF`*,CS_+F`$,CS^YB!O``0@+P`(8`#_8C(\_LA@C XM$#(\_CY@"C(\_MI@!#(\_C@@+P`$8`#_1#)\_LY@$#)\_L)@"C)\_UY@!#)\' XM_I(@;P`$3.\``P`(+PXL>0```LA.MI``+%].=4SO`P,`!,&(PXDO#BQY```"U XMR$ZN_DHL7TYU3.\#`P`$P8C#B2\.+'D```+(3J[^O"Q?3G5,[P,#``3!B,.)^ XM+PXL>0```LA.KOZV+%].=4SO`P,`!,&(PXDO#BQY```"R$ZN_K`L7TYU(&\`W XM!#(\_M1A`/Z@(F\`""*!3G4@+P`$ XMT"0\/_```'8`3KH-J$CM``/_T$SM``/_T$ZZ!.((````9P0(1P``2H9G&$SM< XM``/_T"0\/^```'8`3KH-ADCM``/_T"\M``PO+0`(3KH"4DAM_^`O`2\`3KH". XMP)#P\Z(#_)CQID]^42.T``__P3KH'A XMFB0\/6KD("8\W`A)FTZZ#*1,[0`,__!.N@>`)#P]YA(\)CQH:M0O3KH,?$SM; XM``S_\$ZZ!V8D/#Y:YD4F/$M=P*M.N@QP3.T`#/_P3KH'3"0\/L<=XR8\I23P; XM8DZZ#$A,[0`,__!.N@``!+P$O`"\M``PO+0`(80#],&`:<``O`"\`7 XM(BT`""0M``PO`B\!+P(O`6$`_10D+?_\3EU.=4Y5```O+0`,+RT`"$ZZ`"PDI XM/#_Y(?LF/%1$+1A.N@LP2'@``4*G+P$O`"\M``PO+0`(80#\UDY=3G5.50``K XM3.T``P`(=`!V`$ZZ"@1M"B`M``@B+0`,8`I,[0`#``A.N@763EU.=4CG/P!,D XM[P`#`!QA```0(&\`)$C0`,!,WP#\3G4L`"X!*@!(13@%`D5_\`Q%0S!M```N8 XM`D1__PQ$?_!M```,;@``$DJ!9@``#`*`@````'(`3G5(0$ZZ`\HL`"X!3G4VA XM!01#/_!L```,`H:`````?@!.=2P`+@$"1(``Z$,$0P`4;```&D1#=/_GJLR"" XM?@"]@&<``!0$10`03OH$%G3_YJIP`,*"LX=*@6<```H$10`03OH#_C`$2$!.* XM=0``+PLF;P`((!,,@`````)G"`R``````68(<"$I0`3T8`9P(BE`!/1P`"9?W XM3G4```````!P84YU3G5.50``3.T``P`(=`!V`$ZZ".1L&$SM``,`"$ZZ!,`OB XM`2\`80``(DZZ!+1@%DAM``@O+0`,+RT`"$ZZ_M),[0`#``A.74YU3E4``$SM8 XM``,`"'0`=@!.N@B>;!9,[0`#``A.N@1Z+P$O`&&63KH$<&`\2&T`""\M``POQ XM+0`(3KK^CD_O``QT`'8`3KH(:F\83.T``P`()#P_\```=@!.N@E62.T``P`(N XM3.T``P`(3EU.=4Y5``!(YP$0+B\`$"9O`!0I1P+,*4L"T"EM`!`"U"EM`!0"7 XMV"EM`!@"W"EM`!P"X"EM`"`"Y"EM`"0"Z$AL`LQ.NO[66$]*@&<(3.P``P+D7 XM8`9,[0`#`"!,WPB`3EU.=4CG,`!V_R0`:@``.`R`O_```&4``%Y(Y\#`2'D`K XM```"3KH%3EA/3-\#`V```$9(YS``)CQ_____)`!J```&4H.W@$A`-``"0G_PG XMM4`$0C_P;0``(`I``!!(0.A"!$(`%&X``#!$0N2H2H)K```^8```/'``8```N XM-DCGP,!(>0````).N@3L6$],WP,#(`-@```<#$(`"V[@LX#EN.6ILX"P@V+4X XM2H)J```$1(!,WP`,3G4``"(`2$$"07__#$$`@&T``"0,07^`;```/N:``H"/O XM____!H`X````2$$"@0````?FF4YU2H%G^DCG/`!(0#@``D2``#H\.=!P`$A!E XM3KH!K$S?`#Q.=>:``(!_\```2$$"@0````?FF4YU+P9*@&<``(Q\`&```!0@+ XM+P`$+P8L`&<``'IJ```$1(`,@`$```!E``!B/#Q*@`R`@````&4```H&A@``$ XM!`#@B`R`"````&4```H&A@```@#HB`R``@```&4```H&A@```0#DB`R``0``P XM`&4```@&1@"`XHAR`-&!2$#01DA&`D:``+U`2$!@```*/#Q+`$ZZ`9PL'TYU` XM``!P`"(`N4!(0$YU2.?`P$AY`````4ZZ`Z983TS?`P-P`'(`N4!(0$YU2.?`E XMP$AY`````DZZ`XA83TS?`P,@/```?_"Y0'(`2$!.=4CGP,!(>0````1.N@-F4 XM6$],WP,#(#Q_\0``<@!.=0@```-G```>2.?`P$AY````!$ZZ`T!83TS?`P,(( XM@``#",```0!`?_!(0$YU2$!(1'H0#(`````@;```%DA`2$$P`4)!!$4!``R`M XM````(&WL0D0,@```(`!L```&X8A01$A`2D!F```&Z9A81'P`0_H`/APQ``#MF XMN-A&2$`L`>FIZ;ZS1KU`Z4R:1$A`2$1.=0R`````(&P``#9(0$A!,`%"001%` XM`0!L`/_H8```9@4$`P,"`@("`0$!`0$!`0$`````````````````````=@`,[ XM@```(`!L```&X8A00TA`2D!F```&Z9A80W0`%#L`P.6XUD)(0"0!YZGGNK-"S XMM4#I2YI#;0``#$A`T$6`1$A`3G5$1>A-)`#JJ.JZZJFQ@K6!2$"Y0$A`3G4`+ XM``R````!`&P```H$1@@`8```$$A`2D!F```(X9@$1@0`#$``$&P```CIF`1&G XM`@`,0`!`;```".68!$8!`$H`:P``"..8!$8`@$A`2D9L```21$;N3NRHW(;B` XMD'(`T8%.=4I&9P``%DA`"D``@+U`2$8"1H``O4!(0$YU4H#)*@F8```Q*@V8```9.^OVT3OK]HK1';0``( XM+@R"``!_\&8```A*@V<```H@`B(#3OK]L$J`9@``#$J!9@``!D[Z_8).^OUP" XM.@#*1V8``!I*@&8```Q*@68```9.^OT<3KK]K&````B[0`I``!#.0F8``"9*S XM@F8```Q*@V8```9.^OSXP4+#0\M'3KK]@L%"PT/+1V````B_0@!"`!`$13_P9 XMVD=H```&3OK\^$A`+@'AB.&)X9^S1[]`2$(N`^&*X8OAG[='OT(N`$A'SL,L9 XM`DA&S,'>AD)'WT=(1TA!+`',PD)&2$;>ADA#+`/,P$)&2$;>ADA`2$(L`,S") XMQL#>@W8`W8/"PMZ!W8,B`$A!)@)(0\##Q,'1@B0`0D#10$A`2$)"0MZ"T8;"_ XMP]*'=`#1@D[Z`O0``"\'+B\`""E'`A!*K`(49Q0P?``!(FP"%+/(9PA(>``(( XM3I%83RX?3G4```````````````!(YS]`80``"$S?`OQ.=3P\@``^/'_P2$!(* XM0C@`R$:Y0,Q"O4*]1+!';0``<+!";0``+`R```!_\&8```A*@6<```9.^OPT' XMM$=M```>#((``'_P9@``"$J#9P``"B`"(@-.^OP63OK[]$J"9@``*DJ#9@``6 XM)$CGP,!(>0````-.NO],6$],WP,#(#P``'_PN4!R`$A`3G5.^ONTM$=M```>` XM#((``'_P9@``"$J#9P``"B`"(@-.^OO"3OK[5CH`RD=F```J2H!F```<2H%FF XM```62H)F```,2H-F```&3OK[?$[Z^RY.NON^8```"+M`"D``$,Y"9@``)DJ"C XM9@``#$J#9@``!F``_V[!0L-#RT=.NON4P4+#0\M'8```"+]""D(`$`1'/^":. XM1V@```9.^OL*2$`N`>F(Z8GIG[-'OT!(0BX#?`OMJNVK[;^W1[]"2$0X!2)$H XM2$*`PC@`2$$P`4)!2$(Z`LK$2$,\`\S$2$,^`\[$2$?>1DA'0D9(1MV%DH>1Q XMAF0```A31-*#T8)"0TA$+`!(0H#":```&$)$(`:2@TA"D8)(0$A!,`%"06``] XM`"HX`$A!,`%"04A"/`+,Q"X#2$?.Q$A'W$=(1D)'W4=(1I*'D89D```24T323 XM@]&"90``"%-$TH/1@BP`2$*`PF@``!1"12`&2$*00DA`2$$P`6```!0Z`$A!X XM,`%(0CP"S,60AF0```Y31=""90``!E-%T()(14A"@,)H```$A-6$4,10`Y;P``R XM#D[Z^2XR`$)`2$!(001%`!!N\@9%`!`D`.JHZKKJJ;&"M8%T`-."T8)(0+E`) XM2$!.=20`Z(CHFNB)L8*U@70`TX+1@DA`T$4,0'_P901.^OD`N4!(0$YU2.<_+ XM0&$``!I,WP+\3G5(YS]`80``"$S?`OQ.=0A"`!](0$A"/#R``#X\?_`X`,A&, XMN4`Z`,I'NT#,0KU"SD*_0KI'9@``X`Q%?_!F```JL$)M```2+@".@68```XN$ XM`HZ#9P``"B`"(@-.^OC.O$1G``!^3OKXIDI%9@``1$A`9@``*$J!9@``(DA"0 XM9@``#DJ#9@``",A&3OKX."`"(@-(0+U`OT!(0$YU2$)F```>2H-F```82$"YE XM0+M`2$!.=7X0FD>_0+]"2$!(0KQ$9P``))*#9@``"I&"9@``!DYUD8)J```(> XM1(%`@#@&3OKXW$[Z^!S2@]&"#(``(```;0``%.*(XI%^`-.'T8<&10`0#$5_( XMX&4```9.^O?@2$#018!$2$!.=6X```K!0L-#R4;+1PQ%?_!G```P2D=F```^$ XM2$)F```02H-F```*N4"[0$A`3G76@]6"2D5F```F2$#2@=&`8```(DJ`9@``E XM#$J!9@``!D[Z]YA.^O?`"D(`$$A""D``$$A`GD5&1^A'!$4`(`Q'`#1N```>\ XMTH'1@`Q'`"!O```@)@)T``1'`"#NJW0`8```-`9%`!!(0-!%@$1(0$YU#$<`H XM$&\```XV`DA#0D)(0@1'`!`B1BP"[JKNONZKM8:]@RP)O$1F```\TH/1@@9%Q XM`!#BB.*1#(``(```;0``"@9%`!#BB.*1?@#3A]&'2$#010Q%?_!D```(@$1(- XM0$YU3OKVU)^'DX.1@@R``"```&T`_K9$A]*'?@#1A^*(XI$&10`02$#018!$$ XM2$!.=4CG!S`N+P`8)F\`'"PO`"`O!TZZ#4183R1`(`IF!'#_8#8(*@`#``-GD XM$$AX``)"IR\'3KH'B$_O``PO!B\++RH`!$ZZ"/1/[P`,*@!*K`(,9P1P_V`"6 XM(`5,WPS@3G4``````````'!A2.<#$"9O`!`@2TH89OQ3B)'++`A^`!X;2H=G` XM,E.L`5YM%B!L`59#Z``!*4D!5B`'$(!R`!(`8-P@!W(`$@!(;`%2+P%.N@*6D XM4$\B`&#&2&P!4DAX__].N@*$4$\@!DS?",!.=0```````'!A3E7_\$CG(3(F` XM;P`L#*P````@!&9L``"&$!-R(+`!9PQR";`!9P9R"K`!9@12BV#H2A-G:"`LU XM!&;E@%*L!&9![`1NT<`D2'`BL!-F)E*+)(M*$V<*<"*P$V<$4HM@\DH39@Q(4 XM>``!3KH,Z%A/8)Y"&V":)(M*$V<8$!-R(+`!9Q!R";`!9PIR"K`!9P12BV#DO XM2A-F`F`&0AM@`/]R2JP$9F8&(&P",&`$0>P$;BE(!&I*K`1F9GQ!^@$D0^P$: XM+"+8(M@BV"+8,I`B;`(P(&D`)$AX`"@O*``$2&P$+$ZZ!"Y/[P`,0>P$+"((U XM)#P```/N+&P$^$ZN_^(I0`+P*4`"^'($*4$"]"E``P`I00+\Y8"3R2QX``0K^ XM0/_P3J[^VB!M__`B0"-H``@`I'X`*T#_]&`J+&P$^$ZN_\HI0`+P3J[_Q"E`: XM`OA!^@"F(@@D/````^U.KO_B*4`#`'X$(`<`0(`!@:P"["`'`$"``H&L`O0`O XMK```@`,"_$JL`9AG!'``8`8@/```@``N`$*L`4P@!P!```$I0`%(<`$I0`%NE XM(`<`0``"*4`!:G`"*4`!D"`'`$``@"E``8Q!^@D"*4@")"\L!&HO+`1F3KH`Y XM,D*73KH&0$SM3(3_W$Y=3G5C;VXZ,3`O,3`O,S(P+S@P+P`J````````````* XM`````$[Y`````````````````````````````"\+)F\`"$JK`!1G#`@K``,`0 XM&V8$<`!@-B\L`?!.N@7*6$\G0``$)T``$$J`9@IP#"E`!/1P_V`6)VP!\``4+ XMG``)T``#'+_OH%G``)"+PM.NO]26$]*@&<,".L`!0`;+?)9AHL4R2.("L`!"(`THP!*"92(`MG0"`K``2PI XMAVTRL(=F#"!3)(B?K`$L(`M@;B`K``20AW((L(%E%B!+T<+`!0AB`&5H`L6 XM``)&__PO!DZZ!@983R9`(`MG$B\&+PM.NOW*+H=A`/]44$]@`G``3-\,P$YU/ XM``````````!P82\'+B\`""\'3KK_,EA/+A].=0``2.<#$"XO`!!'[`$P(`MGW XM-`@K``(`&V8H""L``0`;9R`@*P`$D*L`$"P`2H9G$B\&+RL`$"\K`!Q.NO;BL XM3^\`#"938,@O!TZZ!/A83TS?",!.=0``2.*/__<$^^@&\"+@`@!T/M_Z]@`A+84X!D^D(U>*^3R2QX``1._ XMKO[:)D!*JP"L9TP@*P"LY8`D0"PJ`#A*AF8$+"L`H$J&9S0B!D'Z`+(D"'8+L XM+&P$^$ZN_]`@1U*'(`@;O``*"*\B!D'M_Z\D""8'+&P$^$ZN_]!P_V!.2JP$R XM\&820_H`AG``+'@`!$ZN_=@I0`3P0>W_KRE(```\2'@`^G``+P`O`$ALW XM`=Q(;`'(2&P!M$*G3KH!F$_O`"!3@&<$``$3J[^MBP`#`8`_V8$<`!@9G`B(CP``0`!3J[_.B1`(`IF"G``$ XM$`9.KOZP8$@E2P`*(`<50``)%7P`!``(0BH`#A5&``^3R4ZN_MHE0``0(`MG? XM"")*3J[^GF`:0>H`&"5(`!1!Z@`4)4@`'$*J`!@5?``"`"`@"DS?3,!.=0``M XM+P``43KH`U XM1EA/(`=,WT"`3G5AM$YU``!(YS`R+&P$\"!O`!@B;P`<)&\`("9O`"0@+P`HN XM(B\`+"0O`#`F+P`T3J[^I$S?3`Q.=0``2.<'`"XO`!`@+`$84X`L`$I&:S`@_ XM!DC`YX!![`+L*C`(`$H%9QH(!0`"9A0@!DC`YX!![`+L+S`(!$ZZ_"Q83U-&6 XM8,PO!TZZWI983TS?`.!.=0``2.<`,B9L!/P@"V<4)%,B2R`K``@L>``$3J[_& XM+B9*8.B1R"E(!0`I2`3\3-],`$YU2. XM``0O#BQI`!1.KO_B+%].=0``+PXL>0```BP@+P`(3J[^PBQ?3G4O#BQY```"J XM+")O``A.KOZ>+%].=2\.+'D```(L(F\`"$ZN_I@L7TYU+PXL>0```BP@;P`(; XM3J[^C"Q?3G4O#BQY```"+")O``A.KOZ&+%].=2\.+'D```(L(&\`"$SO`@$`P XM#"(O`!1.KOY$+%].=0``+PXL>0```BPB;P`(3J[^/BQ?3G4O#BQY```"+")O- XM``A.KOXF+%].=2\.+'D```(L(F\`""`O``Q.KOW8+%].=0```^P````!````) XM`0``%PX````1`````@``)!@``"0$```C\```(]```".\```CJ```(Y0``".`G XM```C;````W8```-<```#0@```R@```,.```",`````P````&`````````_``? XM```#7T]P96Y,:6)R87)Y```D%`````)?5V%I=$E/````)``````#7T-L;W-E+ XM1&5V:6-E```C[`````-?3W!E;D1E=FEC90```"/,`````U]297!L>4US9P``G XM````([@````"7T=E=$US9P```".D`````E]296U0;W)T```CD`````)?061D1 XM4&]R=```(WP````"7U=A:70``````"-H`````E]"96=I;DE/```C5```````: XM``/R@``#Z0```1).5?^P2.<#"$GY`````!M\``;__T*G2&P`8$ZZ`[103RE`A XM`LAF$$AL`'1.N@/"0I=.N@/(6$]"ITAL`)).N@-64$\I0`).2H!F$$AL`)9.( XMN@.>0I=.N@.D6$\9?``*`DE![?__*4@"8G`!*4`"9G``+P!(;`)`+P!(;`"P? XM3KH#9$_O`!!*@&<82&P`ODZZ`V`NK`).3KH#1D*73KH#7EA/.7P``P)<&7P`R XM$`)><`(I0`)8*7P```$(`F)P$"E``F8Y?`!``FQ![`)`0^P"A'`0(MA1R/_\= XM0J=(;`#83KH"ME!/*4`"DDJ`9B!(;`#<3KH"_DAL`D!.N@+>+JP"3DZZ`MQ"I XMETZZ`O103W`$*4`"G$AY```!"&$``>Q(;`#V2&W_N$ZZ`Q)(;?^X3KH"=$_OB XM`!!P`!`M_\=R`>&A+P%.N@+>2&W_N$ZZ`G8@0"ZH`"A(;?_:*T#_M$ZZ`NA(` XM;`$`2&W_VDZZ`D8L`'``(&W_M"%``"`A0``D+HA.N@(>3^\`%$J&9R1^`$AMK XM_]I.N@(D6$^^@&R<$#5XVG(`$@`O`6$``#I83U*'8-Y(;`)`3KH")BZL`DY.V XMN@(D+JP"DDZZ`AQ(;?^X3KH!\$AM_[A.N@)"3.T0P/^D3EU.=4CG)PA)^0``+ XM```>+P`;?`!Z`$J%9EH@!G(&3KH"1$/L```2,0@`L@=F+GH!<@!#[```,C$(G XM`G0`0^P``#0Q"`0O`B\!80``,%!/?``,A@``&UAL!%*&8/12AG`0O(!FLGH!K XM?``,A@``)Q!LIE*&8/1,WQ#D3G5(YP,(2?D`````/B\`$CPO`!8Y1P)J<``PM XM!R\`80``0CE``FXY1@*N<``P!BZ`80``,#E``K)(;`)`3KH!HDAL`H1.N@&:! XM2&P"0$ZZ`29(;`*$3KH!'D_O`!1,WQ#`3G5.5?_X2.'AS>7-LL XM:6(N;&EB0``0F%D($YE=W,@+2T@;F\@4D586"!L:6)R87)Y"@``'rexxdial_ba.uu' <<'END_OF_FILE' Xbegin 664 rexxdial_back XM```#\P`````````(``````````<```#*```!,T````0```!_```!20``!6X`# XM```%````,0```^D```#*2.=^_DOO`#0D2"0`2?D`````+'@`!"E.`%HI3P!BJ XM0JP`7D?Y```#('(`(#P```"!8`(FP5'(__PF;@$4<``B/```,`!.KO[.*6L`> XMF`!62JL`K&<``5!A``*<(BP`5BQL!11.KO^@*4``5B!K`*S1R-'((F@`$-/)4 XMT\D@`G(`$ADH"28!TH'0@5J`Y8C0K``4*4``%$'L```L>``$3J[_(B)`+P`B0 XM:0`01^D`YB!$(`-@`A;84P`AB(()#P```/M+&P%%$ZN_^(I0`!R+'@`!$ZNJ XM_WPB+`"4)"P`F"@L`(@L;`443J[_=B9.2H!F```@)%\B:@`0(BP`5DZN_Z8@+ XM2BQX``1.KO\<<&A@```F)$`B7T7J_Z1!Z@!*0>@`!"`H``0A20`$(H@C0``$+ XM($`@B7``+'@`!$ZN_W8B2RQX``1.KOYB3-]_?DYU*6L`.@`F!JP```"``"9A; XM``%`1?H`\"E*`!IA``%,*4``7B\`)$`@*@`D9Q(L;`44($`B*```*4$`5DZN# XM_X(B*@`@9QHD/````^U.KO_B*4``;F<*Y8@@0"=H``@`I"!L`%XO"$AL`"(@" XM:``D*6@`!`!V3KH!"$ZY`````'``8```A````#D`````(`](YW[^*D`L>``$H XM2?D`````*4\`8F$``*Z3R2QX``1.KO[:)D`I:P`Z`"8&K````(``)B!K`(#11 XMR-'((F@`#-/)T\DI40`>(5$`#"(L`%8L;`443J[_@DAZ`(1.N0````!83R(L9 XM`!XL;`443J[_9"(L`%9.KO^F<``@+`!.9P0@0$Z03KD``!6(+'@`!")L!11.G XMKOYB3KD```1.2JP`7F<:(BP`;F<$3J[_W"QX``1.KO]\(FP`7DZN_H8N;`!B! XM3-]_?DYU0^P`>G``3J[]V"E`!11G```$3G5P9&"<0>L`7$ZN_H!!ZP!<3J[^9 XMC$YU``!.^0``!$QP80```^P````"`````0```HP```(<`````P````0````D` XM```"/`````X````#````!0```L8```*T```#(@````````/R```#Z0```3-.: XM5?^PO^P`)F4`!"I(YS,"&WP`!O__0J=(;`$`3KH$0%!/*4`#J&8FP!%"0()@`L;`443J[_T"(L`').KO_<0J=.N@0X6$]"ITAL`4A.N@/24$\I& XM0`,N2H!F)G`9(BP`W__RE(`T)P`2E``T9P`"\`2&P#("\`2&P!@$ZZ`\1/[P`02H!GX XM+G`9(BP`&A+P%.N@+N2&W_N$ZZ`HPKP XM0/^T($`@:``H0^W_VA+89OQ![?_:0^P" XM(&W_M"%``"`A0``D+HA.N@(N4$]*AF@!*A69:(`9R!DZZ`CY#[`"@$C$(`+('9BYZ`7(`0^P`H#(Q"`)T`$/LU XM`*`T,0@$+P(O`6$``#!03WP`#(8``!M8;`12AF#T4H9P$+R`9K)Z`7P`#(8`T XM`"<0;*92AF#T3-\`Y$YUO^P`)F4``4Y(YP,`/B\`#CPO`!(Y1P-*<``P!R\`9 XM80``0CE``TXY1@..<``P!BZ`80``,#E``Y)(;`,@3KH!FDAL`V1.N@&22&P#7 XM($ZZ`21(;`-D3KH!'$_O`!1,WP#`3G5.5?_XO^P`)F4``.A(YS$`/B\`'G``@ XM,`=.N@$@3KH`X$CO``,`#"`\/Y,S,R(\,S,S,TSO``P`#$ZZ`0PD/$$NA(!V] XM`$ZZ`-!.N@$F3-\`C$Y=3G5.5?_TO^P`)F4``)1(YS`0)F\`($*M__A"K?_\` XM3.T``__X)#Q`&2'[)CQ41"T83KH`VFY4($M2BR\M__PO+?_X+T@`%$ZZ`+(D& XM/$!?P`!V`$ZZ`'`N@2\`3KH`O$_O``Q.N@!^(&\`#!"`3.T``__X)#P_V9F9# XM)CR9F9F93KH`@$CM``/_^&"43-\(#$Y=3G4``$[Y```3S$[Y````4$[Y```0R XM_$[Y````%$[Y```&%$[Y````*$[Y````/$[Y````F$[Y```).$[Y````K$[Y+ XM````A$[Y```2F$[Y````9$[Y```%CD[Y```&?$[Y```1:$[Y```+!$[Y```"B XMG$[Y```.1$[Y````7$[Y```-1$[Y`````$[Y```$4$[Y```%8$[Y`````$[Y, XM````;$[Y```3K'!A```#[`````(````"```!B@```/@````"`````P``!)P`> XM``3`````#P````4```26```$>```!*X```20```$H@``!+0```1:```$B@``^ XM!$(```1^```$Q@``!&P```0J```$A```!#8````!````!@``!+H````)````` XM!P``!%0```1(```$,```!$X```2H```$/```!&8```1R```$8`````````/R6 XM0``#Z@````0````````````````````````#\@```^D```!_,CS_4F!P,CS^, XMJF!J,CS_$&!D,CS^[&"8,CS^X&"2,CS^AF",_ XM,CS^F&"&0```ZA.KOZ\8 XM+%].=4SO`P,`!,&(PXDO#BQY```#J$ZN_K8L7TYU3.\#`P`$P8C#B2\.+'D`O XM``.H3J[^L"Q?3G4@;P`$,CS^U&$`_J`B;P`((H%.=2`O``1RH&$`_HXB;P`(? XM(HA.=0```^P````&````!````(0```%B```!?````98```&P```!R@``````= XM``/R```#Z@```,@````````````````````!`````0```.9.^0``````````9 XM````````````````````````````````````````````````````````````` XM`````````````````````````````````````````````````````````&1O3 XM'-Y XM;&5R(%9E````````````````````````````````3 XM```````````"P```````````````````````````````````````````````" XM`````````````````````````````````````````/__````#@`.````````: XM````````__\````$``0````````3<@```N3__P````0`!````````!.(````2 XM`````^P````$````!````P@```*>```"?````)0````"````!0```Q@```,$= XM`````````_(```/I```%;DY5_\!(YP,`+B\`8"PO`&1,[0`#`!`D/$'Y(?8F' XM/+H```!.N@T@;3!*AF<&0?H"9F`$0?H"9'``<@`O`2\`+P$O`"\M``PO+0`(9 XM+PA(>``!3KH$KF```C1,[0`#`!`D/#_47S`F/&W)R().N@C,2&W_T"\!+P!.% XMN@+D3^\`#"0\/^```'8`3KH,O&T83.T``__0)#P_\```=@!.N@VH2.T``__0( XM3.T``__03KH$X@@```!G!`A'``!*AF<83.T``__0)#P_X```=@!.N@V&2.T`: XM`__0+RT`#"\M``A.N@)22&W_X"\!+P!.N@)R2.T``__83.T``__0)#Q`"2(`. XM=@!.N@@V2.\``P`<3.T``__@3.\`#``<3KH-.DSM``S_V$ZZ#2)([P`#`!Q,4 XM[0`#_]`D/+[BKN\F/$N>Y9U.N@?Z2.\``P`D3.\``P`<3.\`#``D3KH,_BZ!6 XM+P!([0`#__A.N@'.3^\`&"0\/>__^B8\,]710TZZ"\YO``#V3.T``__X)``F1 XM`4ZZ![`D/#SH@/\F/&F3WY1([0`#__!.N@>:)#P]:N0@)CS<"$F;3KH,I$SM* XM``S_\$ZZ!X`D/#WF$CPF/&AJU"].N@Q\3.T`#/_P3KH'9B0\/EKF128\2UW`X XMJTZZ#'!,[0`,__!.N@=,)#P^QQWC)CRE)/!B3KH,2$SM``S_\$ZZ!S(D/#\JZ XM`:`F/!H!/AI.N@P\3.T`#/_P3KH'&"0\/X$1$28\$1$0L$ZZ#!1,[0`,__!.1 XMN@;^)#P_Q555)CQ555543KH,"$SM``S_\$ZZ!N1,[0`,__A([0`#_^A.N@;4` XM3KH+W$CM``/_^$J'9Q!,[0`#__A.N@:P2.T``__X3.T``__X3.T`P/^X3EU.B XM=6-O``!H XM0JJS()^`+V`9P``%`1%`!!.^@06=/_F0 XMJG``PH*SATJ!9P``"@1%`!!.^@/^,`1(0$YU```O"R9O``@@$PR``````F<(\ XM#(`````!9@AP(2E`!1!@!G`B*4`%$'``)E].=0```````'!A3G5.=4Y5``!,^ XM[0`#``AT`'8`3KH(Y&P83.T``P`(3KH$P"\!+P!A```B3KH$M&`62&T`""\M; XM``PO+0`(3KK^TDSM``,`"$Y=3G5.50``3.T``P`(=`!V`$ZZ")YL%DSM``,`W XM"$ZZ!'HO`2\`899.N@1P8#Q(;0`(+RT`#"\M``A.NOZ.3^\`#'0`=@!.N@AJ' XM;QA,[0`#``@D/#_P``!V`$ZZ"59([0`#``A,[0`#``A.74YU3E4``$CG`1`NZ XM+P`0)F\`%"E'`ZPI2P.P*6T`$`.T*6T`%`.X*6T`&`.\*6T`'`/`*6T`(`/$/ XM*6T`)`/(2&P#K$ZZ_M983TJ`9PA,[``#`\1@!DSM``,`($S?"(!.74YU2.0````).N@5.6$],WP,#8```1DCGS XM,``F/'____\D`&H```92@[>`2$`T``)"?_"U0`1"/_!M```@"D``$$A`Z$($D XM0@`4;@``,$1"Y*A*@FL``#Y@```\<`!@```V2.?`P$AY`````DZZ!.Q83TS?9 XM`P,@`V```!P,0@`+;N"S@.6XY:FS@+"#8M1*@FH```1$@$S?``Q.=0``(@!(H XM00)!?_\,00"`;0``)`Q!?X!L```^YH`"@(____\&@#@```!(00*!````!^:9: XM3G5*@6?Z2.<\`$A`.``"1(``.CPYT'``2$%.N@&L3-\`/$YUYH``@'_P``!(4 XM00*!````!^:93G4O!DJ`9P``C'P`8```%"`O``0O!BP`9P``>FH```1$@`R`" XM`0```&4``&(\/$J`#("`````90``"@:&```$`."(#(`(````90``"@:&```". XM`.B(#(`"````90``"@:&```!`.2(#(`!````90``"`9&`(#BB'(`T8%(0-!&X XM2$8"1H``O4!(0&````H\/$L`3KH!G"P?3G4``'``(@"Y0$A`3G5(Y\#`2'D`! XM```!3KH#IEA/3-\#`W``<@"Y0$A`3G5(Y\#`2'D````"3KH#B%A/3-\#`R`\I XM``!_\+E`<@!(0$YU2.?`P$AY````!$ZZ`V983TS?`P,@/'_Q``!R`$YU"```K XM`V<``!Y(Y\#`2'D````$3KH#0%A/3-\#`PB```,(P``!`$!_\$A`3G5(0$A$! XM>A`,@````"!L```62$!(03`!0D$$10$`#(`````@;>Q"1`R````@`&P```;A1 XMB%!$2$!*0&8```;IF%A$?`!#^@`^'#$``.VXV$9(0"P!Z:GIOK-&O4#I3)I$U XM2$!(1$YU#(`````@;```-DA`2$$P`4)!!$4!`&P`_^A@``!F!00#`P("`@(!E XM`0$!`0$!`0````````````````````!V``R````@`&P```;AB%!#2$!*0&8`/ XM``;IF%A#=``4.P#`Y;C60DA`)`'GJ>>ZLT*U0.E+FD-M```,2$#018!$2$!.C XM=41%Z$TD`.JHZKKJJ;&"M8%(0+E`2$!.=0``#(````$`;```"@1&"`!@```0: XM2$!*0&8```CAF`1&!``,0``0;```".F8!$8"``Q``$!L```(Y9@$1@$`2@!KA XM```(XY@$1@"`2$!*1FP``!)$1NY.[*C&(X8GA= XMG[-'OT!(0BX#X8KAB^&?MT>_0BX`2$?.PRP"2$;,P=Z&0D??1TA'2$$L`F?F XMLT>_0$A"+@-\"^VJ[:OMO[='OT)(1#@%(D1(0H#".`!(03`!0D%(0CH"RL1(A XM0SP#S,1(0SX#SL1(1]Y&2$="1DA&W862AY&&9```"%-$TH/1@D)#2$0L`$A", XM@,)H```80D0@!I*#2$*1@DA`2$$P`4)!8```*C@`2$$P`4)!2$(\`LS$+@-(U XM1\[$2$?<1TA&0D?=1TA&DH>1AF0``!)31-*#T8)E```(4T32@]&"+`!(0H#"= XM:```%$)%(`9(0I!"2$!(03`!8```%#H`2$$P`4A"/`+,Q9"&9```#E-%T()E? XM```&4T70@DA%2$*`PF@```1P_SH`(`0B!2@).@1(1$[Z`(```$J`:P``.$J"E XM:@``($J`9@``9DJ!9@``8$J#9@``6@R"@````&8``%!.=;""9@``#+:!90``% XM0F8``#A.=4J":P``'F8``"Q*@V8``"9*@68``"`,@(````!F```63G6T@&8`9 XM``RR@V4```YF```$3G5$_``(3G5$_```3G4,@`(```!M```0XHCBD4I%;```2 XM3&````H$10`0;```0$1%Z$U810Q%`#EO```.3OKY+C(`0D!(0$A!!$4`$&[R* XM!D4`$"0`ZJCJNNJIL8*U@70`TX+1@DA`N4!(0$YU)`#HB.B:Z(FQ@K6!=`#30 XM@M&"2$#010Q`?_!E!$[Z^0"Y0$A`3G5(YS]`80``&DS?`OQ.=4CG/T!A```(' XM3-\"_$YU"$(`'TA`2$(\/(``/CQ_\#@`R$:Y0#H`RD>[0,Q"O4+.0K]"ND=F2 XM``#@#$5_\&8``"JP0FT``!(N`(Z!9@``#BX"CH-G```*(`(B`T[Z^,Z\1&<`` XM`'Y.^OBF2D5F``!$2$!F```H2H%F```B2$)F```.2H-F```(R$9.^O@X(`(B) XM`TA`O4"_0$A`3G5(0F8``!Y*@V8``!A(0+E`NT!(0$YU?A":1[]`OT)(0$A"S XMO$1G```DDH-F```*D8)F```&3G61@FH```A$@4"`.`9.^OC<3OKX'-*#T8(,& XM@``@``!M```4XHCBD7X`TX?1AP9%`!`,17_@90``!D[Z]^!(0-!%@$1(0$YUO XM;@``"L%"PT/)1LM'#$5_\&<``#!*1V8``#Y(0F8``!!*@V8```JY0+M`2$!.U XM==:#U8)*168``"9(0-*!T8!@```B2H!F```,2H%F```&3OKWF$[Z]\`*0@`03 XM2$(*0``02$">149'Z$<$10`@#$<`-&X``![2@=&`#$<`(&\``"`F`G0`!$<`4 XM(.ZK=`!@```T!D4`$$A`T$6`1$A`3G4,1P`0;P``#C8"2$-"0DA"!$<`$")&\ XM+`+NJNZ^[JNUAKV#+`F\1&8``#S2@]&"!D4`$.*(XI$,@``@``!M```*!D4`K XM$.*(XI%^`-.'T8=(0-!%#$5_\&0```B`1$A`3G5.^O;4GX>3@Y&"#(``(```" XM;0#^MD2'TH=^`-&'XHCBD09%`!!(0-!%@$1(0$YU2.<',"XO`!@F;P`<+"\`F XM("\'3KH#M%A/)$`@"F8$W_L"E(`O!(>``HS XM2'@`^G``+P`O`$AL`PQR`"\!2&P"^"\!3KH!F$AX`!1.N@'$+&W_K$Y=3G4JI XM*B!3=&%C:R!/=F5R9FQO=R`J*@``15A)5```:6YT=6ET:6]N+FQI8G)A8!I!Z@`8)4@`%$'J`!0E2``<0JH`&!5\``(`("`*4 XM3-],P$YU```O!RXO``AP`"E``#I*AVLBOJP">&P<(`?G@$'L`\Q*L`@`9PX@3 XM!^>`0>P#S-'`(`A@"'`)*4`%$'``+A].=0``````````````````2.``43KH`1EA/(`=,WT"`3G5AM$YU``!(YS`R+&P%#"!O`!@B;P`0``Z XM`%H@+P`(3J[^PBQ?3G4O#BQY````6B)O``A.KOZ>+%].=2\.+'D```!:(F\`# XM"$ZN_I@L7TYU+PXL>0```%H@;P`(3J[^C"Q?3G4O#BQY````6B)O``A.KOZ&D XM+%].=2\.+'D```!:(&\`"$SO`@$`#"(O`!1.KOY$+%].=0``+PXL>0```%HBZ XM;P`(3J[^/BQ?3G4O#BQY````6B)O``A.KOXF+%].=2\.+'D```!:(F\`""`OD XM``Q.KOW8+%].=0```^P````)````!````+````"<````B````&@```!4````W XM0````"P````8````!`````````/P`````U]/<&5N3&EB0```*P````"R XM7U=A:71)3P````"8`````U]#;&]S941E=FEC90```(0````#7T]P96Y$979I, XM8V4`````9`````-?4F5P;'E-'rexxdial_back.c' <<'END_OF_FILE' X/* X * This program can dial a telephone number by producing the telephone tones X * You can use it by holding the telephone receiver next to the right speaker. X * X * The program uses the frequencies specified by the CCITT V.19 X * recommendation X * X * Usage: rexxdial X * Send numbers from within an ARexx program to the 'DialPort' port using X * the "address 'DialPort' telephonenumber" instruction. X * Sending the 'CLOSE' command will stop the program. X * X * This program can be used by eg: VLT and SuperBase Proffesional X * X * Author : Arthur van Rooijen 15-April-1990 X * X * Note: This program is only tested in the Netherlands at the moment X * X * Compile: lc rexxdial.c X * Link : blink FROM LIB:cback.o+"rexxdial.o"+LIB:rexxglue.o X * TO "rexxdial" X * LIB LIB:lcm.lib X * LIB:lc.lib LIB:amiga.lib X * BATCH X */ X X#include X#include X#include X#include X#include X#include X#include X#include X#include X#include X X#include X#include X X#define BANNER "\nTelephone Dialer Version 1.0 by Arthur van Rooijen\n" X#define NOREXX "Can not open REXX library" X#define CNTCREPORT "Can not open Message Port" X#define CNTOPAUDIO "Can not open Audio Device" X Xextern struct MsgPort *CreatePort(); X Xvoid sound(UWORD per1, UWORD per2); Xvoid dial(UBYTE digit); XUWORD duration(UWORD frek); Xvoid fill_wave(BYTE *data); X Xlong _stack = 4000; Xchar *_procname = "Dialer"; Xlong _priority = 0; Xlong _BackGroundIO = 1; Xextern BPTR _Backstdout; X XBYTE chip wave1[16]; X X/* X * Frequencies specified by CCITT V.19 X * X * B1=1209 Hz B2=1336 Hz B3=1477 Hz B4=1633 Hz X * A1=697 Hz 1 2 3 A X * A2=770 Hz 4 5 6 B X * A3=852 Hz 7 8 9 C X * A4=941 Hz * 0 # D X * X * The periods are calculated by the next formula: X * period = 3579545 / ( 16 * frequency) X */ Xstruct { UBYTE key; X UWORD per1, X per2; X}table[]={{'0',238,167}, X {'1',321,185}, X {'2',321,167}, X {'3',321,151}, X {'4',291,185}, X {'5',291,167}, X {'6',291,151}, X {'7',263,185}, X {'8',263,167}, X {'9',263,151}, X {'*',238,185}, X {'#',238,151}, X {'A',321,137}, X {'B',291,137}, X {'C',263,137}, X {'D',238,137}}; X Xstruct IOAudio s0,s1; Xstruct RexxLib *RexxSysBase; X X Xvoid _main() X{ X UBYTE sunit=0x06; X int i; X char number[32]; X X struct MsgPort MyPort; X struct RexxMsg *rmptr; X LONG test; X X X RexxSysBase = (struct RexxLib *)OpenLibrary("rexxsyslib.library",0L); X if (RexxSysBase == NULL) { X Write(_Backstdout,NOREXX,strlen(NOREXX)); X Close(_Backstdout); X exit(0L); X } X X /* X * Open the audio device and create 2 channels for the right X * speaker X */ X if((s0.ioa_Request.io_Message.mn_ReplyPort=CreatePort("s0",0L))==NULL){ X Write(_Backstdout,CNTCREPORT,strlen(CNTCREPORT)); X Close(_Backstdout); X exit(0L); X } X X s0.ioa_Request.io_Message.mn_Node.ln_Pri=10; X s0.ioa_Data=&sunit; X s0.ioa_Length=(ULONG)sizeof(sunit); X X if((OpenDevice(AUDIONAME,0L,&s0,0L))!=NULL){ X Write(_Backstdout,CNTOPAUDIO,strlen(CNTOPAUDIO)); X Close(_Backstdout); X DeletePort(s0.ioa_Request.io_Message.mn_ReplyPort); X exit(0L); X } X X s0.ioa_Request.io_Command=CMD_WRITE; X s0.ioa_Request.io_Flags=ADIOF_PERVOL; X s0.ioa_Request.io_Unit=(struct Unit *)0x02; X s0.ioa_Data=(UBYTE *)wave1; X s0.ioa_Length=sizeof(wave1); X s0.ioa_Volume=64; X X s1=s0; X if((s1.ioa_Request.io_Message.mn_ReplyPort=CreatePort("s1",0L))==NULL){ X Write(_Backstdout,CNTCREPORT,strlen(CNTCREPORT)); X Close(_Backstdout); X CloseDevice(&s0); X DeletePort(s0.ioa_Request.io_Message.mn_ReplyPort); X exit(0L); X } X s1.ioa_Request.io_Unit=(struct Unit *)0x04; X X /* X * Write BANNER and close output filehandler to allow window to X * close X */ X Write(_Backstdout,BANNER,strlen(BANNER)); X Close(_Backstdout); X X /* X * Create a SIN wave of 16 samples in chip memory X */ X fill_wave(wave1); X X /* X * Create a message port for the rexx interface and make it public X */ X InitPort(&MyPort,"DialPort"); X AddPort(&MyPort); X X X for (;;) { X /* X * Wait for telephone numbers X */ X Wait(1<rm_Args[0]); X test = strcmp(number,"CLOSE"); X X /* X * Send a return code X */ X rmptr->rm_Result1 = 0; X rmptr->rm_Result2 = 0; X ReplyMsg(rmptr); X X /* X * Stop if close command was send X */ X if (test == 0) break; X X /* X * Dial number X */ X for(i=0;i'rexxglue.o.uu' <<'END_OF_FILE' Xbegin 664 rexxglue.o XM```#YP````````/I````?S(\_U)@<#(\_JI@:C(\_Q!@9'*48&`R//\T8%HR8 XM//YH8%0R//]P8$XR//]\8$@R//]J8$(R//YZ8#PR//YT8#8R//YN8#`R//YB; XM8"HR//Z`8"0R//],8!YRB&`:,CS_%F`40````!.MA``+%].=3(\_W9@X#(\_SI@VC(\_HQ@U#(\S XM_IY@SC(\_J1@R#(\_T9@PC(\_T!@O#(\_D1@MC(\_P1@L#(\_OY@JC(\_OA@? XMI#(\_O)@GC(\_NQ@F#(\_N!@DC(\_H9@C#(\_IA@AG*"8"`R//\H8!HR//]DJ XM8!0R//Y08`YRCF`*,CS_+F`$,CS^YB!O``0@+P`(8`#_8C(\_LA@$#(\_CY@R XM"C(\_MI@!#(\_C@@+P`$8`#_1#)\_LY@$#)\_L)@"C)\_UY@!#)\_I(@;P`$0 XM3.\``P`(+PXL>0````!.MI``+%].=4SO`P,`!,&(PXDO#BQY`````$ZN_DHLV XM7TYU3.\#`P`$P8C#B2\.+'D`````3J[^O"Q?3G5,[P,#``3!B,.)+PXL>0``> XM``!.KOZV+%].=4SO`P,`!,&(PXDO#BQY`````$ZN_K`L7TYU(&\`!#(\_M1AF XM`/Z@(F\`""*!3G4@+P`$H!```"7T-683)I``````'6`0```E]/<&5N1@`````!O`$```)?Y XM0U9X,F,``````:(!```"7T-68S)X``````&(`0```U]!9&1#;&EP3F]D90``4 XM`6X!```"7U-E96M&``````%0`0```U]&:6QL4F5X>$US9P```4H!```"7T-6N XM:3)A>@````%$`0```E]#5FDR80`````!/@$```1?56YL;V-K4F5X>$)A4X```#2`0```E]3=')C<'E!````S`$```)?4W1R8VUPN XM50```,8!```"7U-T'A-&ES=$8`````3`$```1?1&5L971E1$]34&MT````````? XM1@$```-?1$]35W)I=&4```````!``0```E]$3U-296%D````.@$```-?1$]3A XM0V]M;6%N9``````T`0``!%]$96QE=&5297AX37-G```````N`0``!%]$96QE$ XM=&5!%-Y. Mail comments to the moderator at . Post requests for sources, and general discussion to comp.sys.amiga.