home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
MODEMS
/
MODEM
/
MDMFND13.LBR
/
MDMFND13.CQ
/
MDMFND13.C
Wrap
Text File
|
2000-06-30
|
4KB
|
189 lines
/* program to auto search phone numbers for 300/1200 carrier
* note--this program is for tek-80 members only, not for
* outside distribution. no encouragement of illegal/unethical
* activity is to be implied by this program. it is for
* entertainment use only!
*
* written by Tom Burnett 05/16/84 ver 1.3
*/
#include "qstdio.h"
main(argc,argv)
int argc;
char *argv[];
{
int x,y;
int pre, start, finish, count;
char s[20];
char t[10];
fprintf(stderr,"\n\n\nModem Finder ver 1.3 Tom Burnett 05/16/84\n\n\n");
if (argc < 4) {
fprintf(stderr,"usage A>finder [pre start end] [modemstr] [>outfile]<cr>\n");
exit(1);
}
strcpy(t, "ATE0");
for (y = 0; t[y] != '\0'; ++y) {
mdmout(t[y]);
}
mdmout(13);
delay();
if (argc == 5) {
strcpy(s, argv[4]);
for(x = 0; s[x] != '\0'; ++x) {
mdmout(s[x]);
}
mdmout(13);
delay();
}
pre = atoi(argv[1]);
start = atoi(argv[2]);
finish = atoi(argv[3]);
if (start > 9999 || finish > 9999) {
fprintf(stderr,"\n\ninvalid starting and/or ending number!!\n");
fprintf(stderr,"\n\naborting.....\n\n\n");
exit(1);
}
fprintf(stderr,"starting numbers are....begin %s-%s\n",argv[1],argv[2]);
fprintf(stderr," end %s-%s\n",argv[1],argv[3]);
fprintf(stderr,"\n\n\n");
count = start;
while (count != (finish + 1)) {
dial(pre,count);
delay();
++count;
}
}
/* function to dial number on hayes smartmodem */
dial(pre,num)
int pre;
int num;
{
char s[20];
char s1[10];
char s2[10];
int i,x,y;
x = 13;
strcpy(s, "ATDP ");
itob(pre, s1, 10);
strcat(s, s1);
itob(num, s2, 10);
if (strlen(s2) == 1) strcat(s, "000");
if (strlen(s2) == 2) strcat(s, "00");
if (strlen(s2) == 3) strcat(s, "0");
strcat(s, s2);
fprintf(stderr,"now trying...%s%c",s,x);
for (i = 0; s[i] != '\0'; ++i) {
mdmout(s[i]);
}
mdmout(13);
y = chkcar();
if (y) {
printf("carrier found on --> %s <--\n",s);
fprintf(stderr,"carrier found on --> %s <--\n",s);
hngup();
}
}
/* function to output char to modem--note lobo max-80 specific */
/* uses port a */
mdmout(c)
char c;
{
unsigned dat;
int x;
dat = 0xF7E4;
loop: x = peek(dat + 1);
if ((x & 0x04) == '\0') {
goto loop;
}
poke(dat, c);
}
/* function to check for carrier detect after call returns 1 if yes */
chkcar()
{
char a;
int x,y;
x = 0;
y = 0;
delay();
loop: a = mdmstb();
if (a == 'N') return(0);
if (a == 'C') return(1);
if (checkq()) {
fprintf(stderr,"\n\naborting......\n\n\n");
exit(0);
}
++x;
if (x > 32000) {
x = 0;
++y;
if (y > 60) {
printf("modem hung.....attempting to hang up..\n\n");
fprintf(stderr,"modem hung..attempting to hang up..\n\n");
return(0);
}
}
goto loop;
}
/* function to check status of uart returns char with no loop */
/* ie \0 if no char ready, char if one is available */
mdmstb()
{
unsigned dat;
dat = 0xF7E4;
return(peek(dat));
}
/* function to delay approx 2 secs */
/* also checks for q or Q */
delay()
{
int x,y;
if (checkq()) {
fprintf(stderr,"\n\naborting.......\n\n\n");
exit(0);
}
for (x = 0; x != -1; ++x) ;
}
/* function to hang up smartmodem after car det */
hngup()
{
int i,j,x,y;
char z[10];
char s[10];
strcpy(s, "ATH");
strcpy(z, "+++");
loop: delay();
delay();
delay();
for (x = 0; z[x] != '\0'; ++x) {
mdmout(z[x]);
}
delay();
for (y = 0; s[y] != '\0'; ++y) {
mdmout(s[y]);
}
mdmout(13);
i = 0;
for (;;) {
j = mdmstb();
if (j == 'O') {
fprintf(stderr,"disconnect successful\n");
break;
}
++i;
if (i > 10000) {
fprintf(stderr,"no disconnect..will try again\n");
goto loop;
}
}
delay();
}
/* function to check for q or Q to abort -- returns 1 if true */
checkq()
{
int x;
x = getkey();
if (x == 'q' || x == 'Q') {
return(1);
}
else return(0);
}