[comp.dcom.modems] Checking for modem presence

sichermn@beach.csulb.edu (Jeff Sicherman) (04/02/91)

  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. Purpose is to have autoexec file take
alternate paths when modem is active after hours when machine reboots.

root@zswamp.fidonet.org (Geoffrey Welsh) (04/02/91)

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 <stdio.h>
#include <stdlib.h>
#include <conio.h>

#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 <com>, where <com> = [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)<TA'\,[]W,*3T^+#>/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:@!=<KK`4ZL/`UT*PK`="<\(G2Z/%QT`T+K[#/)0:P\7'3Z/")T!`/1Y
MZ]N+P='I$]&H`772ZY<6'XD^Y@`#UT?1YP/70H#B_BOBB\2CZ`"+V`/[%@<V&
MB3]#0\4V[`"LJ@K`=?J^@0`VCA[)`.L#,\"JK#P@=/L\"73W/`UU`^E_``K`G
M=0/K>9`VB3]#0TZL/"!TVSP)=-<\#71B"L!T7CPB="<\7'0#JNOD,\E!K#Q<5
M=/H\(G0&L%SSJNO1L%S1Z?.J<P:P(JKKQ4ZL/`UT+@K`="H\(G2W/%QT`ZKKE
M[#/)0:P\7'3Z/")T!K!<\ZKKV;!<T>GSJG.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#)<S4
MP+G___*NB_?KZY9?7HOE7<("`%6+[%?_=@3HR_\+P'0@DHOZ,\"Y___RKO?1)
M2;L"`($^4`+6UG4$_Q92`K1`S2%?B^5=P@(`B]`#!E@`<C4Y!E(`<R4%#P!0%
MT=BQ`]/HC-F+'LD`*\L#P8[#B]BT2LTA6'(0)/!(HU(`E8LN6``!%E@`PXO'D
MZ5S[<A,SP(OE7<-S^%#H&`!8B^5=PW,'Z`X`N/__F8OE7<,RY.@!`,.BS@`*"
MY'4C@#[+``-R#3PB<PT\('(%L`7K!Y`\$W8"L!.[`@'7F*/#`,.*Q.OW58OL?
M@^P$5U:^&`$K_^L5D/9$!H-T"U;H2@2#Q`)`=`%'@\8(.38P`G/FB\=>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`<JY(E&^HO&+1@!L0/3^(O(T>`#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<JY%#HU
M?@6#Q`(+P'1'_W8&Z$<`@\0"BU[^Q@<`QT<"``"+7@:+\RO`B02)1P3K)9"+(
M7O[V!Q!T'(M>!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`<JY%#HG`"#Q`8[1OQT!X!,!B"___^+T
M1`2)!,=$`@``B\=>7XOE7<.058OL@^P$BUX$.Q[0`'(%N``)ZRKW1@@`@'1(H
M@WX*`'0:,\F+T;@!0LTA<DOW1@H"`'4.`T8&$U8(>2BX`!;YZS:)5OZ)1OR+,
MT;@"0LTA`T8&$U8(>0V+3OZ+5ORX`$+-(>O8BU8&BTX(BD8*M$+-(7(%@*?2=
M`/WI<?I5B^R#[`B+7@0['M``<@>X``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<N@`"/2@"<P.Z@``KXHO4B_H6!XM."*P\W
M"G0,._MT&:KB].@D`.MBL`T[^W4#Z!D`JK`*_T;\Z^/H#@#KXEY?ZU;K1KC\`
M_^C1]E!348O/*\KC$(M>!+1`S2%R#0%&_@O`=`996UB+^L.#Q`AS!+0)ZQ[V)
MA](`0'0+BUX&@#\:=0/XZPSYN``<ZP:+1OXK1OR+9OA>7^EP^8M."`O)=06+S
MP>ED^8M6!K1`S2%S!+0)Z^0+P'7@]H?2`$!T"HO:@#\:=0/XZ\_YN``<Z\D`1
M6:'^`#O$<P8KQ/?8_^$SP.OZ58OLBUX$"]MT!(!/_@&+Y5W#58OL5E>[.`*#.
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`!><S:#Q@2!_J@`<P0+TG4&N/__F>LCB]J#PP_1P
MV[$#T^NT2,TA<ND[!DX"=O22B02)5`*)-J@`,\`'7UZ+Y5W#BTX,B_<Y3`)T+
M#(/&!('^J`!U\OGK/XO:`QQR.8O3CL$[]W4&.1Y2`',F@\,/T=O1Z]'KT>L[`
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<AO1X]'2B\N+^M'CT=+1X]'2`]D3UP/8@](`Z]Q8/"V3V
M=0?WV(/2`/?:7E]=PU6+[(M>!#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&EB<F%R>2`M($-O<'ER:6=H="`H8RD@,3DX.
M.2P@36EC<F]S;V9T($-O<G`0`/@#^`+H`_@"````````````````6`(```H!7
M`$P`L5@`.T-?1DE,15])3D9/#@"R`!H`L!0`@8&!`0$'`+(`%0"P\``*`4,%0
M`+(`#0"PH`8````6`@(8#0D,#`P'"!86_Q(-$@+_``"@`P``H`,!````````6
M``(!`````````@(```````"$`P````````($0@"R`'@`L`$```($`+(`=`"P<
ML`$"`+(`%P"P(`$`L@`(`+`X`3@!.`$&`+(`$@"P0`954T%'13H@0VAE8VM$-
M4U(@/&-O;3XL('=H97)E(#QC;VT^(#T@6S$@+BX@-%T`3F\@;6]D96T@<')EZ
M<V5N="X`36]D96T@<')E<V5N="X``#P\3DU31SX^``!2-C`P,`T*+2!S=&%CW
M:R!O=F5R9FQO=PT*``,`4C8P,#,-"BT@:6YT96=E<B!D:79I9&4@8GD@,`T*?
M``D`4C8P,#D-"BT@;F]T(&5N;W5G:"!S<&%C92!F;W(@96YV:7)O;FUE;G0-3
M"@#\``T*`/\`<G5N+71I;64@97)R;W(@``(`4C8P,#(-"BT@9FQO871I;F<@^
M<&]I;G0@;F]T(&QO861E9`T*``$`4C8P,#$-"BT@;G5L;"!P;VEN=&5R(&%S5
M<VEG;FUE;G0-"@`H`;+_#@"PI```````6@$`"&0!1`%20HOHC,`%$``.'Z,$F
M``,&#`".P(L.!@"+^4^+]_WSI%"X-`!0RXS#C-A(CMB.P+\/`+D0`+#_\ZY'-
MB_>+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<`<TAN/],S2%086-K960@9FEL92!I^
M<R!C;W)R=7!T!`#Z$*\`.@&.$0``````````````````````````````````&
$`````````
``
end
sum -r/size 44297/7979 section (from "begin" to "end")



--  
UUCP:     watmath!xenitec!zswamp!root | 602-66 Mooregate Crescent
Internet: root@zswamp.fidonet.org     | Kitchener, Ontario
FidoNet:  SYSOP, 1:221/171            | N2M 5E6 CANADA
Data:     (519) 742-8939              | (519) 741-9553
The mile is traversed not by a single leap, but by a procession of coherent 
steps; those who insist on making the trip in a single element will be
failing long after you and I have discovered new worlds. -- me