Path: utzoo!utgpu!watserv1!maytag!xenitec!zswamp!root From: root@zswamp.fidonet.org (Geoffrey Welsh) Newsgroups: comp.dcom.modems Subject: Checking for modem presence Message-ID: <7152.27F9618C@zswamp.fidonet.org> Date: Tue, 02 Apr 91 13:12:33 EST Organization: Izot's Swamp BBS - Kitchener, Ontario In a letter to All, Jeff Sicherman (sichermn@beach.csulb.edu ) wrote: > Anyone know of Ibm-pc/Msdos programs that will check for >the presence of a modem attached to a serial port an ON. >Would return an error level to affect batch file execution. Shouldn't be too hard to check for the assertion of DSR (which would be on whenever a Hayes-type modem is on-line). Microsoft C code and UUENCODEd binary follows. (How's that for service?!?) CAUTIONS: 1) This will only work if the cable you're using has pin 6; 2) It is possible to configure most modems to do strange things with their DSR lines, making this program ineffective; 3) If the specified COM port doesn't exist, the program may report the presence of a modem. Obviously, this simple DSR check isn't perfect... but it's quick. Let me know how it works for you (if at all). /* CheckDSR ((C)) 1991 by Geoffrey Welsh May be distributed freely and/or modified, but must include original copyright notice and documentation of changes. Inspired by a question posted to comp.dcom.modems by Jeff Sicherman. */ #include #include #include #define MODEMSTAT_OFS 6 #define DSRMASK 0x20 main( argc, argv ) int argc; char *argv[]; { int comport; unsigned char modemstat; unsigned short portaddr[] = { 0x3f8, 0x2f8, 0x3e8, 0x2f8 }; if ((argc != 2) || ((comport = atoi( argv[1] )) == 0)) { puts( "USAGE: CheckDSR , where = [1 .. 4]" ); exit( 0 ); /* error */ } modemstat = inp( portaddr[ comport ] + MODEMSTAT_OFS ); if (modemstat & DSRMASK) { puts( "No modem present." ); exit( 0 ); } puts( "Modem present." ); exit( 1 ); } begin 644 checkdsr.exe M35HJ``P````@`*(`__]:`8`````0`"T!'@````$`````````````````````[ M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````58OL@>P,`+@(`%"XT M0@!0C4;T4.A$$(/$!H-^!`)U$XM>!O]W`N@^#X/$`HE&_B/`=1.X;`)0Z*D/' M@\0",\!0Z.,!@\0"BT;^T>"-3O0#R(O9BP<%!@!0Z/(/@\0"B$;\BD;\)2``9 M=!.XF@)0Z',/@\0",\!0Z*T!@\0"N*P"4.A@#X/$`K@!`%#HF0&#Q`*+Y5W#Q M`+0PS2$\`G,"S2"_"@&+-@(`*_>!_@`0<@.^`!#ZCM>!Q)X%^W,0%A_H'0(SF MP%#HH`2X_TS-(8/D_C:))E@`-HDF5`"+QK$$T^!(-J-2``/WB38"`(S#*][W- MV[1*S2$VC![)`!8'_+^6`[F@!2O/,\#SJA8?Z,$#Z"X"Z$D`%A\S[?\VZ@#_E M-N@`_S;F`.C<_E#H_0##N`H!CMBX`P`VQP96`#4"58OL4.B=`>@C!#:!/E`"N MUM9U!UA0-O\65`*X_P!0_Q96`+0PS2&CRP"X`#7-(8D>MP",!KD`#A^X`"6Z@ M.0'-(18?BPY@`N,NC@;)`":+-BP`Q09B`HS:,]LV_QY>`G,%%A_I7P$VQ09FL M`HS:NP,`-O\>7@(6'XX&R0`FBPXL`.,VCL$S_R:`/0!T++D,`+ZJ`/.F=`NY6 M_W\SP/*N=1GKY08>!Q^+][_2`*R8D:S^P'0!2*KB]Q8?NP0`@*?2`+^X`$3-F M(7(*]L*`=`6`C](`0$MYY[YJ`K]J`NBU`+YJ`K]J`NB=`,/&!OH`!.L#58OL3 MOI8#OY8#Z(D`OFH"OVP"Z(``@3Y0`M;6=03_%E8"ZP-5B^R^;`*_;`+H9@"^8 M;`*_;`+H;`#HN@`+P'02]@;Z``1U"X-^!`!U!<=&!/\`Z!0`]@;Z``1T!L8&W M^@``PXM&!+1,S2&+#F`"XP>[`@#_'EX"'L46MP"X`"7-(1^`/O0``'0-'J#UX M`,46]@"T)/V_]'K\L,[]W,.@^\$BP4+10)T\O\=Z^[#? M58OLN/P`4.A_`H,^_```=`3_%OP`N/\`4.AM`HOE7<.X`@#I-OY9B]PKV'(*\ M.Q[^`'($B^/_X5$SP.D?_@!6,_:Y0@`RY/RL,N#B^X#T570-Z*S_N`$`4.@N' M`K@!`%[#CP8``;H"`#@6RP!T*8X&R0`FC@8L`(P&[@`SP)FY`(`S__*NKG7[7 M1T>)/NP`N?__\J[WT8O1OP$`OH$`CA[)`*P\('3[/`ET]SP-=&\*P'1K1TZL] M/"!TZ#P)=.0\#71<"L!T6#PB="0\7'0#0NOD,\E!K#Q<=/H\(G0$`]'KTXO!\ MT>D3T:@!=9`VB3]#0TZL/"!TVSP)=-<\#71B"L!T7CPB="<\7'0#JNOD,\E!K#Q<5 M=/H\(G0&L%SSJNO1L%S1Z?.JGSJG.6L"*JZ\TSP*H6'\<'``#_)@`!2 M`%6+[%6.'LD`,\F+P8OIB_E)BS8L``OV=!".QB:`/@```'0&\JY%KG7Z19=`\ M)/Z+_='E`\46'U>_"0#HD0!?B\^+_0/XB2[J`!X'CMXS]DGC$X$\.T-T!8E^L M`$5%K*H*P'7ZXNV)3@`6'UV+Y5W#58OL5E<>!XM6!+[$`JT[PG000)9T#)7XOE" M7<-5B^R#[`A75HMV!(M^"HM&!O=F"(E&_HE&_(-^!@!T!H-^"`!U!BO`Z0L!E MD/9%!@QU98O?@>L8`;$#T_N+P]'C`]C1X_:'N`$!=4SW1OS_`74@_W;\5HI%* M!RKD4.B]!(/$!HE&^#W__W2\*]+W=@;IQ`#_30)X"XH$BQW_!8@'ZPR05XH$C MF%#HL@"#Q`3V108@=9-&_T[\]D4&"'5`B]^!ZQ@!L0/3^XO#T>,#V-'C]H>X_ M`0%T7.LE_TT">`N*!(L=_P6(!^L,D%>*!)A0Z&P`@\0$]D4&('541O]._(-^0 M_`!T2H-]`@!TSXM%`BM&_!O)(\$#1OR)1OI05O\UZ/@(@\0&BT;Z`04#\"E&) M_"E%`NO+_W;\5HI%!RKD4.C]`X/$!HE&^#W__W0#*4;\BT;^*T;\Z33_7E^++ MY5W#58OL@^P(5U:+=@:*1``#P='@!;@!B4;X[ M]D0&@W0&]D0&0'0*@$P&(+C__^G[`/9$!@%T#(!,!B#'1`(``.OID(!,!@*`H M9`;O*\")1`*+^(E^_/9$!@QU/XO>@>L8`;$#T_N+P]'C`]C1X_:'N`$!=2:!V M_B`!=`R!_B@!=`:!_C@!=0W_=OKHA0>#Q`(+P'4'5NB<`(/$`O9$!@AU&8O>C M@>L8`;$#T_N+P]'C`]C1X_:'N`$!=%"+/"M\!(M$!$")!(M>^(M'`DB)1`(+7 M_WX35_]T!/]V^NCU`H/$!HE&_.L:D(M>^O:'T@`@=`^X`@!0*\!04%/H7`*#W MQ`B+7`2*1@2(!^L7D+\!`(O'4(U&!%#_=OKHN`*#Q`:)1OPY?OQT`^D`_XI&Y M!"KD7E^+Y5W#D%6+[(/L`E;_!A8!BT8$+1@!L0/3^(O(T>`#P='@!;@!B4;^` MN``"4.C.`X/$`HM>!(E'!`O`=`^`3P8(BU[^QT<"``+K%Y"+7@2`3P8$BT;^/ M0(E'!(M>_L='`@$`BUX$B_.+1`2)!\='`@``7HOE7<-5B^R#[`175HMV!/\&7 M%@&!_B`!=0?'1OX``.L9@?XH`74(QT;^`0#K#)"!_C@!=23'1OX"`/9$!@QU" M&8O>@>L8`;$#T_N+P]'C`]C1X_:'N`$!=`0KP.M9BW[^T>>!QS("@ST`=1"X* M``)0Z!L#@\0"B04+P'3>B\8M&`&Q`]/XB\C1X`/!T>`%N`&)1OR+7O[1XXN'P M,@*)1`2)!(M>_+@``HE'`HE$`L8'$8!,!@*X`0!>7XOE7<.058OL@^P"5HM&0 M!BT8`;$#T_B+R-'@`\'1X`6X`8E&_H-^!`!T/8O8]@<0=%J+7@:*1P!HI'!RKD4.A`!8/$`@O`=`G_=@;H"0"#Q`)>B^5=PY!5B^R#I M[`175HMV!"O_BD0&)`,\`G5']D0&"'49B]Z!ZQ@!L0/3^XO#T>,#V-'C]H>X& M`0%T*(L$*T0$B4;\"\!^'%#_=`2*1`7XOE7<.058OL@^P$BUX$.Q[0`'(%N``)ZRKW1@@`@'1(H M@WX*`'0:,\F+T;@!0LTA2BX`!;YZS:)5OZ)1OR+, MT;@"0LTA`T8&$U8(>0V+3OZ+5ORX`$+-(>O8BU8&BTX(BD8*M$+-(7(%@*?2= M`/WIX``GYZ5OZ@3Y0`M;6=03_%E("]H?2`"!T? M"[@"0C/)B]'-(7+?]H?2`(!T;HM6!AX',\")1OZ)1OS\5U:+^HORB6;XBTX(\ MXU2P"O*N=4KHU@`]J`!V2(/L`HO!+1`S2%R#0%&_@O`=`996UB+^L.#Q`AS!+0)ZQ[V) MA](`0'0+BUX&@#\:=0/XZPSYN``7^EP^8M."`O)=06+S MP>ED^8M6!K1`S2%S!+0)Z^0+P'7@]H?2`$!T"HO:@#\:=0/XZ\_YN``[.`*#. M/P!U*1X'N`4`Z',!=04SP)GK)$`D_J,X`J,Z`I;'!`$`@\8$QT3^_O^)-CX") MBTX$C-B.P.@)`%]>B^5=P^G.`$%T^H#A_H/Y[G/RBW<"_*V+_J@!=$)(.\%S& M%8O0`_"MJ`%T-`/"!0(`B_>)1/[KYHO^=`P#^8E,_BO!2(D%ZP4#^?Y,_HO&J MC-J,T3O1=`4FC!Y&`HE_`L,FQ@9,`@(]_O]T)8O^`_"MJ`%T\HO^2#O!<[V+8 MT`/PK:@!=.(#P@4"`(OWB43^Z^:+1P@+P'0$CMCK%";^#DP"=!&,V(S7.\=TH M!2:.'D("BS?KO(MW!C/`Z&H`.\9T#20!0$"8Z%X`=`W^3?[H'`!T!99.3NN93 MC-B,T3O!=`0FHT8"BP>)1P(SP)G#48M%_J@!=`,KR$E!0;K_?R8[%D@"=@31S MZG7UB\$#QG(5`\)R#??2(\(KQN@,`'4(]]+1ZG7E,\!9PU)1Z!T`=!A7B_Z+U M\`/RQT3^_O^)=P:+UBO72HE5_EA96L-34#/2'E)24+@!`%`&'^@/`(/$"(/Z7 M_Q]:6W0""]+#`%6+[%97!H-^"`!U.+]8`(M6!HM&!$AU!^A9`'(GZTZ+-J@`> M2'01._=T#8M$`HE&#%;H0`!>LCB]J#PP_1P MV[$#T^NT2,TAL[` M]W4)`]FAR0`KV([`M$K-(7(-._=U!(D64@"2AP2+T<-5B^R+UXS8CL"+?@0S5 MP+G___*N]]%)D8OZ7<,`Z0$``%6+[%=6BW8$,\"9,]NL/"!T^SP)=/=0/"UTH M!#PK=0&L/#EW'RPP!#L>T`!]$8/[`'P,]H?2`$!T!;@!`.L",\"+: MY5W#`%6+[(/L"%=6OB`!_W8$Z%?_@\0"B_A6Z%3Y@\0"B4;^5E>X`0!0_W8$X MZ%3V@\0(B4;Z5O]V_NCM^8/$!#E^^G4?_TP">`JP"HL<_P2(!^L+5K@*`%#H+ M9/>#Q`0KP.L$D+C__UY?B^5=PY!5B^R+5@3L,N2+Y5W#`%6+[(O7B]Z,V([`. MBW8&BWX$B\>+3@CC#J@!=`*D2='I\Z43R?.DB_.+^EW#````````````````[ M````````35,@4G5N+51I;64@3&EB2`M($-O<'ER:6=H="`H8RD@,3DX. M.2P@36EC+PTB.P+\/`+$$B\;WT-/HC-HKT',$C-@KTM/@`_".VHO']]#3Z(S"*]!S= M!(S`*]+3X`/XCL*LBM!.K8O(1HK")/X\L'4%K/.JZP8\LG5M\Z2*PJ@!=+&^Y M,@$.'XL>!`#\,]*MB\CC$XO"`\..P*V+^(/__W01)@$=XO.!^@#P=!:!P@`0` MZ]R,P$".P(/O$"8!'4B.P.OBB\.+/@@`BS8*``/P`08"`"T0`([8CL"[``#ZX MCM:+Y_N+Q2[_+[1`NP(`N18`C,J.VKH<`