home *** CD-ROM | disk | FTP | other *** search
- REM $Option A- B+ E+ G+ N+ O- X+ L- S- U+ V+ W- Y+
-
- DEFINT a-Z
- DEF NoCarrier(x)=PEEKL(12570624&) AND 8192
-
- ' Answerer.BAS by Frank J. Perricone
-
- WINDOW 1,"Answerer",(0,0)-(160,7),22
- COLOR 1,3
- CLS
- PRINT "Initializing...";
- MENU 1,0,1,"Project"
- MENU 1,1,1,"About..."
- MENU 1,2,0," "
- MENU 1,3,1,"Quit "
- IF COMMAND$<>"" THEN setupfile$=COMMAND$ ELSE setupfile$="Answerer-Config"
-
- CLS
- PRINT "Searching for setup";
- IF FEXISTS(setupfile$) THEN
- OPEN setupfile$ FOR INPUT AS #1
- ELSEIF FEXISTS("SYS:Config/"+setupfile$) THEN
- OPEN "SYS:Config/"+setupfile$ FOR INPUT AS #1
- ELSEIF FEXISTS("s:"+setupfile$) THEN
- OPEN "s:"+setupfile$ FOR INPUT AS #1
- ELSE
- CLS
- PRINT "Setup not found...";
- Delay 3
- STOP -1
- END IF
-
- EatEqualSign
- LINE INPUT #1, textfile$
- EatEqualSign
- LINE INPUT #1, logfile$
- EatEqualSign
- LINE INPUT #1, msgfile$
- EatEqualSign
- INPUT #1, beeps
- EatEqualSign
- LINE INPUT #1, maxbaud$
- EatEqualSign
- LINE INPUT #1, modemsetup$
- EatEqualSign
- LINE INPUT #1, modemreset$
- EatEqualSign
- LINE INPUT #1, connect300$
- EatEqualSign
- LINE INPUT #1, connect1200$
- EatEqualSign
- LINE INPUT #1, connect2400$
- EatEqualSign
- LINE INPUT #1, connect4800$
- EatEqualSign
- LINE INPUT #1, connect9600$
- CLOSE #1
-
- CLS
- PRINT "Setup modem "+maxbaud$;
- OPEN "COM1:"+maxbaud$+",N,8,1" AS #2
- Delay 2
- PRINT #2,"+++";
- Delay 2
- PRINT #2,modemsetup$+CHR$(13);
- LINE INPUT #2,incoming$
- LINE INPUT #2,incoming$
-
- WHILE 1
- MENU 1,0,1
- CLS
- PRINT " --- Idle ---";
- WHILE NoCarrier(0)<>0
- IF MENU(0)<>0 THEN
- IF MENU(1)=1 THEN CALL About ELSE GOTO CloseBox
- END IF
- WEND
- MENU 1,0,0
- CLS
- PRINT "Connecting...";
- IF beeps>0 THEN
- SOUND 523.25,4
- FOR i=1 TO beeps
- SOUND 738.99,4:SOUND 523.25,4
- NEXT i
- END IF
- incoming$=""
- WHILE LEN(incoming$)<LEN(connect300$)
- LINE INPUT #2,incoming$
- WEND
- IF incoming$=connect300$ THEN
- Connect "300"
- ELSEIF incoming$=connect1200$ THEN
- Connect "1200"
- ELSEIF incoming$=connect2400$ THEN
- Connect "2400"
- ELSEIF incoming$=connect4800$ THEN
- Connect "4800"
- ELSEIF incoming$=connect9600$ THEN
- Connect "9600"
- ELSE
- CLS : PRINT "False alarm...";
- END IF
- Hangup maxbaud$
- WEND
-
- SUB Delay (seconds)
- STATIC t&
- t&=TIMER
- WHILE TIMER<t&+seconds
- WEND
- END SUB
-
- SUB EatEqualSign
- STATIC c$
- c$=""
- WHILE c$<>"="
- c$=INPUT$(1,#1)
- WEND
- END SUB
-
- SUB Connect (VAL baudrate$)
- SHARED textfile$,logfile$,msgfile$
- STATIC message$
- CLS
- PRINT "Connected at ";baudrate$;
- CLOSE #2
- OPEN "COM1:"+baudrate$+",N,8,1" AS #2
- IF FEXISTS(textfile$) THEN
- CLS
- PRINT "Showing text...";
- OPEN textfile$ FOR INPUT AS #1
- PRINT #2,INPUT$(LOF(1),#1)
- CLOSE #1
- ELSE
- PRINT #2,"Sorry, no one is here to answer your call at the moment."+CHR$(13)+CHR$(10);
- PRINT #2,"Please try back later."+CHR$(13)+CHR$(10);
- PRINT #2
- END IF
- IF NoCarrier(0)<>0 THEN EXIT SUB
- IF logfile$<>"" THEN
- CLS : PRINT "Updating logfile";
- OPEN logfile$ FOR APPEND AS #1
- PRINT #1,"Answerer took a call at "+baudrate$+" baud at "+TIME$+" on "+DATE$+"."
- CLOSE #1
- END IF
- IF NoCarrier(0)<>0 THEN EXIT SUB
- IF msgfile$<>"" THEN
- CLS
- PRINT "Awaiting reply...";
- PRINT #2
- PRINT #2,"Press Y to leave a brief message, any other key to end."+CHR$(13)+CHR$(10);
- IF INPUT$(1,#2)=="Y" THEN
- CLS : PRINT "Getting message";
- message$=INPUT$(LOF(2),#2) 'Discard any extra
- PRINT #2,CHR$(13)+CHR$(10);
- PRINT #2,"Please type your message below. Press RETURN on a blank line"+CHR$(13)+CHR$(10);
- PRINT #2,"to complete it."+CHR$(13)+CHR$(10);
- PRINT #2,CHR$(13)+CHR$(10);
- GetMessage message$
- PRINT #2
- PRINT #2,"Thanks."+CHR$(13)+CHR$(10);
- OPEN msgfile$ FOR APPEND AS #1
- PRINT #1,"Message left at "+TIME$+" on "+DATE$+":"
- PRINT #1,message$
- CLOSE #1
- END IF
- END IF
- END SUB
-
- SUB GetMessage (message$)
- STATIC inline$,done
- message$=""
- done=0
- WHILE done=0 AND NoCarrier(0)=0
- PRINT #2,"> ";
- FullDuplexInput inline$
- IF inline$="" THEN done=1 ELSE message$=message$+inline$+CHR$(10)
- WEND
- END SUB
-
- SUB FullDuplexInput (inline$)
- STATIC c$
- c$=INPUT$(1,#2)
- inline$=""
- WHILE c$<>CHR$(13) AND c$<>CHR$(10)
- PRINT #2,c$;
- IF c$=CHR$(8) OR c$=CHR$(127) THEN inline$=LEFT$(inline$,LEN(inline$)-1) ELSE inline$=inline$+c$
- c$=INPUT$(1,#2)
- WEND
- PRINT #2
- END SUB
-
- SUB Hangup (maxbaud$)
- WHILE NoCarrier(0)=0
- CLS : PRINT "Hanging up...";
- Delay 1
- CLOSE #2
- Delay 3
- OPEN "COM1:"+maxbaud$+",N,8,1" AS #2
- Delay 2
- WEND
- END SUB
-
- SUB About
- WINDOW 8,"About Answerer",(0,20)-(312,133),54
- COLOR 2,1
- CLS
- PRINT PTAB(8,15);"Answerer by Frank J. Perricone"
- PRINT PTAB(8,27);"This program is in the public domain."
- PRINT PTAB(8,35);"Any alterations must retain credit"
- PRINT PTAB(8,43);"for the original author and a copy"
- PRINT PTAB(8,51);"must be sent to him at:"
- PRINT PTAB(16,63);"Frank J. Perricone"
- PRINT PTAB(16,71);"2132 Lawson Creek Road"
- PRINT PTAB(16,79);"Douglas AK 99824"
- PRINT PTAB(8,91);"or uploaded to the Crystal Ship BBS,"
- PRINT PTAB(8,99);"907-364-3362 3/12/2400 8N1 24hrs."
- PRINT PTAB(8,111);" --- Click to continue... ---";
- WHILE MOUSE(0)=0 : WEND
- WINDOW CLOSE 8
- WINDOW OUTPUT 1
- END SUB
-
- CloseBox:
- CLS
- PRINT "Closing down...";
- CLOSE #2
- OPEN "COM1:"+maxbaud$+",N,8,1" AS #2
- Delay 2
- PRINT #2,"+++";
- Delay 2
- PRINT #2,modemreset$+CHR$(13);
- LINE INPUT #2,incoming$
- LINE INPUT #2,incoming$
- CLOSE #2
- STOP -1
-
-