[comp.sys.amiga] A great program to autorun your favorite modem program from boot!

dillon@CORY.BERKELEY.EDU (Matt Dillon) (12/02/86)

Problem:

	I want to execute my modem program from my workbench startup program,
	but only if my modem is on.

Answer:
	CHECKMODEM [cli-command] [-s ascii string to transmit]

	Preference serial parameters are used.

	The cli-command is sent and the ascii string transmited only if the
	program finds the modem connected.  The program determines if the
	modem is connected by sending some characters over and waiting
	for them to be echo'd back.  The program will wait for up to 
	3/50's of a second.  

	As far as I know, any modem's local echo is quick enough.  Most
	host-echo's (already connected to something) are not.

	Additionaly, the program returns an error code of 20 if it does
	not find a modem.

Other:
	CHECKMODEM opens the serial device then closes it.  If your modem
	is setup such that closing the serial device drops the carrier, the
	program will probably terminate the telephone connection if there
	is one active.

	However, the program has been designed more for placing in your
	boot script or .login (if you are using my SHELL), when the modem
	likely would not have an active connection.

Source:
	NOTE: You need my library to get a working copy of the program from
	the source.  If you are on the ARPAnet, simply 

		ftp ucbvax.Berkeley.EDU
		name = anonymous, password = guest, and CD amiga.

	else mail me.



Shell Examples: (V2.03)

	% checkmodem; mymodemprogram

	(mymodemprogram is only executed if CHECKMODEM does not return
	 an error)

	% checkmodem -s atdt 5551234; mymodemprogram

	(same as above, but CHECKMODEM will send the string 'atdt 5551234'
	 terminated by a CR before returning.  Thus, it's busy dialing
	 dialing while your amiga is loading your modem program)


CLI Examples:
	
	1> checkmodem mymodemprogram -s atdt 5551234


	(From a CLI, it's usually better to have CHECKMODEM execute the
	 program)

	1> checkmodem run mymodemprogram -s atdt 5551234

	(Here, we are RUNing it so the checkmodem program returns immediately)


Algorithm Outline:

	- Open serial device (return error code 20 if can't open serial device)
	- Clear input queue
	- send <CR>AT<CR> 
	- Delay(3)	/* 3/50 second */
	- check to see if any data present:
		- send optionaly specified string [-s string], add the CR
		- CLOSE serial device
		- Execute("commandline",0 ,0)  if commandline specified.
		- exit(0)

	  (no data present)
	- CLOSE serial device
	- exit(20)

---------------------------------------------------------------


begin 600 checkmodem
M```#\P`````````+``````````H```!Q````;@```(0````&````!@```!,`
M``&I````!0```#D````4````2P```^D```!Q(\\````<(\`````D(\@````H
M0KD````@+'D````$(\X````$D\E.KO[:*$!*K`"L9P``J&$``6P@;`"LT<C1
MR"!H`!#1R-'(2.<@,$7Y````K$?Y````+'0!<``0&";*8`(4V%'(__Q"&B`Y
M````)"!Y````*!(84X!O'@P!`"!O]%*")LI@"A(84X`,`0`@;P04P6#R0AI@
MW$(:0IL@`DS?#`1(>0```"PO`$ZY`````"/`````$$ZY````$"/`````%"/`
M````&$ZY`````'``+GD````<3G5A``#&80``L"/`````($*G+P`D0"`J`"1G
M$"QY````""!`(B@``$ZN_X(B*@`@9R@D/````^U.KO_B(\`````0(\`````4
M(\`````89PKEB"!`*6@`"`"D3KD`````<`!@!"`O``0N>0```!PO`"QY````
M!"`Y````"&<"(D!.KOYB2KD````@9PY.KO]\(GD````@3J[^AB`?3G5(YP$&
M+CP``X`'+'@`!$ZN_Y1,WV"`<&1@L$'L`%Q.KOZ`0>P`7$ZN_HQ.=4*Y````
M"$/Y```!K"`\````'DZN_=@CP`````AGMDYU``````/L````&@````$```&Z
M```!J@```:0```%J```!7@```5````%"```!(@```1P```$6````]@```.0`
M``#4````Q@```,````"T````I@```'(```!L````5````$X````@````%```
M``X````(`````@````(````&```!-````,P````"````"0```*X```"Z````
M`````_`````"97AI=#(```````%``````G!A<FU%>&ET````F@````)W86ET
M;7-G`````9`````"9&]M86EN``````$R`````F1O8V]N<P`````!!`````1F
M<F]M5V]R:V)E;F-H````````V@````-E>&ET5&]$3U,```````%R`````F9R
M;VU#3$D`````-`````)?97AI=````````3P````";W!E;D1/4P````&B````
M`C8D-S4R````````E@````)S=&%R='5P```````````"-20W-3(```````"2
M`````C0D-S4R````````B`````(S)#<U,@```````'8````",B0W-3(`````
M``!B`````C$D-S4X```````!6`````(Q)#<U,@```````&0````";F]$3U,`
M``````%V`````````_(```/J````;@`!````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M9&]S+FQI8G)A<GD````#\`````)697)2978````````````"7T1/4T)A<V4`
M```(`````E]S=&1I;@``````$`````-D;W-#;61,96X````````D`````VEN
M:71I86Q34````````!P````#9&]S0VUD0G5F````````*`````-A<F=V07)R
M87D````````L`````E]E<G)N;P``````#`````)?4WES0F%S90````0````"
M1$]33F%M90````&L`````V%R9W9"=69F97(``````*P````"7W-T9&]U=```
M```4`````E]S=&1E<G(`````&`````-R971U<FY-<V<````````@````````
M`_(```/K````A````_(```/I````!B!O``1*&&;\D>\`!)'\`````2`(3G4`
M`````_(```/I````!B!O``0B;P`((`A*&&;\4X@0V6;\3G4``````_(```/J
M````$RUS`"``#4%4#0`-`'-E<FEA;"YD979I8V4```!S97)I86PN9&5V:6-E
M`'!A<F%L;&5L+F1E=FEC90!C;VYS;VQE+F1E=FEC90````````/R```#Z0``
M`:E.5O[X+7P`````_OQP`2U`_O@@+O[XL*X`"&QDY8`@;@`,T<!(>0`````O
M$$ZY```&4%"/2H!F"BU\```!`/[\8#@@+O[XY8`@;@`,T<`O$"\N_OQ.N0``
M``!0CR`N_OA2@+"N``AL$DAY`````R\N_OQ.N0````!0CU*N_OA@DDZY```!
M5$J`9P``Q"\\```!`$AN_P!.N0```?10CW`$+P!(>0````5.N0```L90CW`#
M+P!.N0```"!8CR\\```!`$AN_P!.N0```?10CTJ`9VI*.0```0!G/'`R+P!.
MN0```"!8CTAY```!`$ZY`````%B/+P!(>0```0!.N0```L90CW`!+P!(>0``
M``I.N0```L90CTZY```!N$HY`````&<J<``O`"\`2'D`````3KD````T3^\`
M#&`23KD```&X<!0O`$ZY```!/%B/3EY.=0``3E;__$CG`0!*N0```@AF/G``
M+P`O/````+AP4B\`2'D```($2'D```(`<``O`"\`2'D````,3KD```/P3^\`
M("/````""$J`9P1A``%H(#D```((3-\`@$Y>3G4@.0```@A.=4Y6__Q(YP$`
M2KD```((9R1A``&"0KD```((<%(O`"\Y```"!"\Y```"`$ZY```%K$_O``Q,
MWP"`3EY.=4Y6__1(YP<@2JX`#&<2+SD```(`3KD```#P6(]*@&8*<`!,WP3@
M3EY.=2\Y```"`$ZY```!!%B/(GD```(`(&D`*"1N``@4D'H!NJX`#&=T('D`
M``(`,7P`"0`<+SD```(`3KD```#(6(\@>0```@`L*``@("X`#)"%O(!O`BP`
M('D```(`,7P``@`<(&X`"-'%(`@B>0```@`C0``H(T8`)"\Y```"`$ZY````
MR%B/('D```(`("@`(`R``````&,"VH!A``!.(`5,WP3@3EY.=4Y6__Q(YP$`
M('D```($,7P``P`<('D```($(6X`"``H('D```($(6X`#``D+SD```($3KD`
M``#(6(],WP"`3EY.=4Y6__Q(YP$`('D```(`,7P``@`<('D```(`(7P```(,
M`"AP`2!Y```"`"%``"0O.0```@!.N0```-Q8CTS?`(!.7DYU+SD```(`3KD`
M``$86(\O.0```@!.N0```018CTYU``!.5O_\<``@;@`(,"@`'#%\``(`'"%N
M``P`*"%N`!``)"\(+4#__$ZY````R%B/("[__"!N``@Q0``<("@`($Y>3G5.
M5O_\<``@;@`(,"@`'#%\``,`'"%N``P`*"%N`!``)"\(+4#__$ZY````R%B/
M("[__"!N``@Q0``<("@`($Y>3G5.5O_LD<@O""\(+4C__"U(__@M2/_T+4C_
M\$ZY`````%"/+4#__$J`9P`!/"\\``$``2\N`!Q.N0````!0CRU`__1*@&<`
M`2!*K@`89S1P`"\`+P!.N0````!0CRU`__A*@&<``0(O/``!``$O+@`<3KD`
M````4(\M0/_P2H!G``#F2JX`(&=D2'D````<+RX`"&$``910CTJ`9PP@;O_T
M("X`(!%``$](>0```"HO+@`(80`!=%"/2H!G#"!N__0@+@`@$4``-4AY````
M.B\N``AA``%44(]*@&<0(&[_]"%N`"``*"%N`"0`)"!N__0A;O_\``XO+@`0
M+P@O+@`,+RX`"$ZY````E$_O`!`M0/_L2H!F4$JN`!AG)B!N__0B;O_P<!\2
MV%'(__P@;O_P(6[_^``.,7P``P`<(FX`&"*((&[_]#%\``(`'")N`!0BB'``
M(&[__!`H``]R`>&A(`%.7DYU2J[__&<,+R[__$ZY````G%B/2J[_^&<,+R[_
M^$ZY````G%B/2J[_]&<0+RX`'"\N__1.N0```!A0CTJN__!G$"\N`!PO+O_P
M3KD````84(]P`$Y>3G5.5@``2JX`"&<R+RX`"$ZY````M%B/(&X`"$JH``YG
M#"\H``Y.N0```)Q8CR\N`!`O+@`(3KD````84(]*K@`,9R8@;@`,2J@`#F<,
M+R@`#DZY````G%B/+RX`$"\N``Q.N0```!A0CTY>3G5.5@``2.<`#"IN``@H
M;@`,$!42%+`!9A:``4H`9@IP`4S?,`!.7DYU4HU2C&#B<`!,WS``3EY.=4Y6
M``!(YP`,*FX`""AN``Q*%6<N2A1G*A`5$A2P`60*</],WS``3EY.=1`5$A2P
M`6,*<`%,WS``3EY.=5*-4HQ@SA`5$A2P`6;.<`!,WS``3EY.=0```^P````!
M`````````4@````F`````@```UP```-.```#.````RX```,D```#'@```Q(`
M``+T```"Z````MP```+0```"I@```I@```**```"=@```F````)2```"1@``
M`BX```(@```"!````=X```'8```!S@```<(```&R```!I````98```%Z```!
M=````5X```$L```!'@```/@```#H````U````#H````&`````0````,```#N
M`````@````0```!T````5@````@````%```$N@``!)H```1Z```!A@```0H`
M``"D````:@```"8````+````!@```>0```&,```!/@```1@```$0````_@``
M`*H```#(````F````((````N````!@````@```7^```%T@``!70```5B```$
M1@``!`P````#````"0```3(```#@````M@```!(````*```%O```!@X```7B
M```%H```!8H```3V```$8@``!"@```/6```#E````U0```,^```"^@```IX`
M``)8```#8@```B8```(*`````````_(```/I````!2!O``0@B%B00J@`!"%(
M``A.=0`````#\`````)?3F5W3&ES=``````````````#\@```^D````Y2.<_
M("@O`"`6+P`G+SS_____3KD```!$*@`L!73_M(58CV8&<`!@``!N+SP``0`!
M2'@`(DZY`````"1`SXI*A\^*4(]F#B\&3KD```!8<`!8CV!")40`"A5#``D5
M?``$``A"*@`.%48`#T*G3KD````P)4``$$J$6(]G#"\*3KD```!L6(]@#$AJ
M`!1.N0````!8CR`*3-\$_$YU2.<@("1O``Q*J@`*9PHO"DZY````@%B/%7P`
M_P`(=/\E0@`4=``4*@`/+P).N0```%A(>``B+PI.N0```!A/[P`,3-\$!$YU
M```#[`````$````'````C@````@````*````-@```!0```!N````R@```$H`
M``"`````K@```-8````````#\`````$N3#D`````#`````$N3#@`````*@``
M``$N3#<`````5`````$N3#8`````B`````$N3#4`````?`````$N3#0`````
ME`````$N3#,`````1@````$N3#(`````)`````$N3#$`````E@````$N3#$W
M````H`````$N3#$V````G`````$N3#$U````I`````$N3#$T````J@````$N
M3#$S````M`````$N3#$R````W@````$N3#$Q````!`````$N3#$P````````
M``-?1&5L971E4&]R=`````"<`````U]#<F5A=&50;W)T```````````````#
M\@```^D````4+PXL>0````A.KO_*+%].=2\.+'D````(3J[_Q"Q?3G4O#BQY
M````""(O``A.KO\Z+%].=4CG,`(L>0````A,[P`.`!!.KO\B3-]`#$YU````
M``/L````!`````$````Z````)````!0````$`````````_`````"7T5X96-U
M=&4````T`````E]$96QA>0``````(`````)?3W5T<'5T`````!`````"7TEN
M<'5T`````````````````_(```/I````2R\.+'D````$3.\``P`(3J[_.BQ?
M3G4``"\.+'D````$(F\`""`O``Q.KO\N+%].=2\.+'D````$(F\`"$ZN_MHL
M7TYU+PXL>0````0@+P`(3J[^MBQ?3G4O#BQY````!"`O``A.KOZP+%].=2\.
M+'D````$(F\`"$ZN_IXL7TYU+PXL>0````0B;P`(3J[^F"Q?3G4O#BQY````
M!"!O``A,[P(!``PB+P`43J[^1"Q?3G4``"\.+'D````$(F\`"$ZN_CXL7TYU
M+PXL>0````0B;P`(3J[^."Q?3G4O#BQY````!")O``A.KOXR+%].=2\.+'D`
M```$(F\`"$ZN_BPL7TYU+PXL>0````0B;P`(3J[^)BQ?3G4O#BQY````!")O
M``A.KOX@+%].=0```^P````.`````0```1P```$(````]````.````#,````
MN````)@```"$````<````%P```!(````-````!P````$`````````_`````"
M7T%B;W)T24\```$8`````E]786ET24\````!!`````)?0VAE8VM)3P```/``
M```"7U-E;F1)3P````#<`````E]$;TE/````````R`````-?0VQO<V5$979I
M8V4```"T`````U]/<&5N1&5V:6-E`````)0````"7U)E;5!O<G0```"`````
M`E]!9&10;W)T````;`````-?1G)E95-I9VYA;`````!8`````U]!;&QO8U-I
M9VYA;````$0````#7T9I;F1487-K````````,`````)?1G)E94UE;0```!@`
;```#7T%L;&]C365M``````````````````/R
`
end