10 ' * * * D I A L E R * * * USES THE HAYES SMARTMODEM AS AN AUTO-DIALER 20 ' WRITTEN BY: R. L. WILCOX 920 N. WASHINGTON OWOSSO, MI 48867 30 ' DATE WRITTEN: 21 JAN 82 LAST REVISION: 28 JAN 82 40 ' LANGUAGE: MBASIC REV. 4.51 SYSTEM: CP/M 50 CLEAR 1000 60 DIM N$(20,1) 70 ' MACHINE DEPENDANT VARIABLES =========================== 80 CS=12 'CLEAR SCREEN BYTE 90 KS=16 'KYBD STATUS PORT 100 KD=17 'KYBD DATA PORT 110 KR=1 'DATA READY BIT 120 KX=0 'VALUE TO XOR WITH (0 IF WAITING FOR BIT=1) 130 MS=18 'MODEM STATUS PORT 140 MD=19 'MODEM DATA PORT 150 MR=2 'READY TO SEND BIT 160 MX=0 'VALUE TO XOR WITH 170 CL$=CHR$(CS)+STRING$(20,0)' CLEAR SCREEN + NULLS 180 ' PROGRAM VARIABLES ================= 190 RT=25 'DELAY IN SECONDS BEFORE RE-DIALING NUMBER IN AUTO MODE 200 DT=35 'DELAY IN SECONDS BEFORE HANGING UP IN AUTO MODE 210 ' READ NUMBERS FROM DATA STATEMENTS ================================= 220 N=1 230 READ N$(N,0) 240 IF N$(N,0)="*" THEN 270 250 READ N$(N,1) 260 N=N+1:GOTO230 270 N=N-1 280 ' SET FOR TONE DIALING ==================== 290 D$="ATT"+CHR$(13):GOSUB 880 300 ' NUMBER MENU =========== 310 PRINTCL$; 320 PRINT,"HAYES SMARTMODEM DIALER" 330 PRINT:PRINT"LAST NUMBER: "NA$" - "NU$ 340 PRINT:FOR I=1 TO N 350 PRINTI;N$(I,0)TAB(25)N$(I,1) 360 NEXT 370 PRINT" I INPUT FROM KEYBOARD"; 380 PRINTTAB(25);"H HANG-UP" 390 PRINT" A AUTO RE-DIAL"; 400 PRINT TAB(25);"R REPEAT LAST NUMBER" 410 PRINT " Q QUIT";TAB(25)"S GO TO SYSTEM (CP/M)" 420 PRINT:LINEINPUT"SELECTION: ";SE$ 430 AFLAG=0:T1=0 440 IF SE$="I" THEN GOSUB 850:GOTO 520 450 IF SE$="H" THEN D$="ATH0"+CHR$(13):GOSUB 620:GOTO 310 460 IF SE$="A" THEN AFLAG=-1:SE$="R" 470 IF SE$="R" THEN SE=0:N$(SE,0)=NA$:N$(SE,1)=NU$:GOTO520 480 IF SE$="Q" THEN CLEAR 200:END 490 IF SE$="S" THEN SYSTEM 500 SE=VAL(SE$) 510 IF SE<1 OR SE>N THEN 310 520 IF LEN(N$(SE,1))=0 THEN 310 530 PRINT:PRINTN$(SE,0)TAB(25)N$(SE,1):PRINT 540 GOSUB 550:GOTO 310 550 ' DIAL SUBROUTINE =============== 560 IF AFLAG THEN 600 570 PRINT"PRESS SPACEBAR TO DIAL: "; 580 WAIT KS,KR,KX:J=INP(KD)AND127 590 IF J<>ASC(" ") THEN RETURN 600 D$="ATD"+N$(SE,1)+";"+CHR$(13) 610 NA$=N$(SE,0):NU$=N$(SE,1) 620 GOSUB 880 630 IF NOT AFLAG THEN RETURN 640 PRINT"PRESS 'C' TO HANG-UP AND CANCEL AUTO RE-DIAL" 650 PRINT"PRESS 'S' TO GO TO SYSTEM W/O HANGING UP." 660 T1=T1+1:PRINT" TRY #"T1;CHR$(13); 670 GOSUB 760 680 FOR J=1 TO RT 690 FOR I=1 TO 70 700 C9=INP(KD)AND 127 710 IF C9=ASC("C") THEN 750 720 NEXT I,J 730 GOTO 660 740 ' HANG UP ======= 750 D$="ATH"+CHR$(13):GOSUB 880:RETURN 760 ' RE-DIAL, HANGUP AFTER DT SEC. ============================= 770 D$="ATD"+NU$+CHR$(13):GOSUB 880 780 FOR J=1 TO DT 790 FOR I=1 TO 70 800 C9=INP(KD)AND 127 810 IF C9=ASC("C") THEN 840 820 IF C9=ASC("S") THEN SYSTEM 830 NEXT I,J 840 GOSUB 740:RETURN 850 ' GET NUMBER FROM KYBD ==================== 860 SE=0:N$(SE,0)="NR. FROM KYBD.":LINEINPUT"NUMBER TO DIAL: ";N$(SE,1) 870 RETURN 880 ' SEND D$ TO MODEM ================ 890 FOR I=1 TO LEN(D$) 900 WAIT MS,MR,MX 910 OUT MD,ASC(MID$(D$,I,1)) 920 NEXT 930 RETURN 940 ' DATA STATEMENTS =============== 950 ' DATA FORMAT: "LINE # DATA NAME,NUMBER" LAST DATA STMT MUST BE: "LINE # DATA *.*" 960 ' WHERE "LINE #" IS REPLACED BY THE ACTUAL LINE NUMBER, "NAME" AND "NUMBER" ARE REPLACED BY THE ACTUAL DIRECTORY INFORMATION. 970 DATA GANCSOS,"120,313-653-8313" 980 DATA POLICE,723-8291 990 DATA KMART PHARMACY,743-5656 1000 DATA BETTY WALKER,"120,616-536-2466" 1010 DATA KEN NIXON,723-4038 1020 DATA BOB BACHMAN,"120,323-2981" 1030 DATA K. PETERSEN,"120,313-759-6569" 1040 DATA DEARBORN CPM BBS(NOT RB),"120,313-846-6127" 1050 DATA ASAP,"120,800-421-7701" 1060 DATA *,* N,"120,313-759-6569" 1040 DATA DEARBORN CPM BBS(NOT RB),"120,313-846-6127" 1050 DATA ASAP,"120,800-421-77