home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 551.lha / Answerer_v1.0 / Answerer.BAS < prev    next >
Encoding:
BASIC Source File  |  1991-09-08  |  5.5 KB  |  239 lines

  1. REM $Option A- B+ E+ G+ N+ O- X+ L- S- U+ V+ W- Y+
  2.  
  3. DEFINT a-Z
  4. DEF NoCarrier(x)=PEEKL(12570624&) AND 8192
  5.  
  6. ' Answerer.BAS    by Frank J. Perricone
  7.  
  8. WINDOW 1,"Answerer",(0,0)-(160,7),22
  9. COLOR 1,3
  10. CLS
  11. PRINT "Initializing...";
  12. MENU 1,0,1,"Project"
  13.   MENU 1,1,1,"About..."
  14.   MENU 1,2,0,"        "
  15.   MENU 1,3,1,"Quit    "
  16. IF COMMAND$<>"" THEN setupfile$=COMMAND$ ELSE setupfile$="Answerer-Config"
  17.  
  18. CLS
  19. PRINT "Searching for setup";
  20. IF FEXISTS(setupfile$) THEN
  21.     OPEN setupfile$ FOR INPUT AS #1
  22.   ELSEIF FEXISTS("SYS:Config/"+setupfile$) THEN
  23.     OPEN "SYS:Config/"+setupfile$ FOR INPUT AS #1
  24.   ELSEIF FEXISTS("s:"+setupfile$) THEN
  25.     OPEN "s:"+setupfile$ FOR INPUT AS #1
  26.   ELSE
  27.     CLS
  28.     PRINT "Setup not found...";
  29.     Delay 3
  30.     STOP -1
  31.   END IF
  32.  
  33. EatEqualSign
  34. LINE INPUT #1, textfile$
  35. EatEqualSign
  36. LINE INPUT #1, logfile$
  37. EatEqualSign
  38. LINE INPUT #1, msgfile$
  39. EatEqualSign
  40. INPUT #1, beeps
  41. EatEqualSign
  42. LINE INPUT #1, maxbaud$
  43. EatEqualSign
  44. LINE INPUT #1, modemsetup$
  45. EatEqualSign
  46. LINE INPUT #1, modemreset$
  47. EatEqualSign
  48. LINE INPUT #1, connect300$
  49. EatEqualSign
  50. LINE INPUT #1, connect1200$
  51. EatEqualSign
  52. LINE INPUT #1, connect2400$
  53. EatEqualSign
  54. LINE INPUT #1, connect4800$
  55. EatEqualSign
  56. LINE INPUT #1, connect9600$
  57. CLOSE #1
  58.  
  59. CLS
  60. PRINT "Setup modem "+maxbaud$;
  61. OPEN "COM1:"+maxbaud$+",N,8,1" AS #2
  62. Delay 2
  63. PRINT #2,"+++";
  64. Delay 2
  65. PRINT #2,modemsetup$+CHR$(13);
  66. LINE INPUT #2,incoming$
  67. LINE INPUT #2,incoming$
  68.  
  69. WHILE 1
  70.   MENU 1,0,1
  71.   CLS
  72.   PRINT "   --- Idle ---";
  73.   WHILE NoCarrier(0)<>0
  74.     IF MENU(0)<>0 THEN
  75.       IF MENU(1)=1 THEN CALL About ELSE GOTO CloseBox
  76.       END IF
  77.     WEND
  78.   MENU 1,0,0
  79.   CLS
  80.   PRINT "Connecting...";
  81.   IF beeps>0 THEN
  82.     SOUND 523.25,4
  83.     FOR i=1 TO beeps
  84.       SOUND 738.99,4:SOUND 523.25,4
  85.       NEXT i
  86.     END IF
  87.   incoming$=""
  88.   WHILE LEN(incoming$)<LEN(connect300$)
  89.     LINE INPUT #2,incoming$
  90.     WEND
  91.   IF incoming$=connect300$ THEN
  92.       Connect "300"
  93.     ELSEIF incoming$=connect1200$ THEN
  94.       Connect "1200"
  95.     ELSEIF incoming$=connect2400$ THEN
  96.       Connect "2400"
  97.     ELSEIF incoming$=connect4800$ THEN
  98.       Connect "4800"
  99.     ELSEIF incoming$=connect9600$ THEN
  100.       Connect "9600"
  101.     ELSE
  102.       CLS : PRINT "False alarm...";
  103.     END IF
  104.   Hangup maxbaud$
  105.   WEND
  106.  
  107. SUB Delay (seconds)
  108. STATIC t&
  109.   t&=TIMER
  110.   WHILE TIMER<t&+seconds
  111.     WEND
  112.   END SUB
  113.  
  114. SUB EatEqualSign
  115. STATIC c$
  116.   c$=""
  117.   WHILE c$<>"="
  118.     c$=INPUT$(1,#1)
  119.     WEND
  120.   END SUB
  121.  
  122. SUB Connect (VAL baudrate$)
  123. SHARED textfile$,logfile$,msgfile$
  124. STATIC message$
  125.   CLS
  126.   PRINT "Connected at ";baudrate$;
  127.   CLOSE #2
  128.   OPEN "COM1:"+baudrate$+",N,8,1" AS #2
  129.   IF FEXISTS(textfile$) THEN
  130.       CLS
  131.       PRINT "Showing text...";
  132.       OPEN textfile$ FOR INPUT AS #1
  133.       PRINT #2,INPUT$(LOF(1),#1)
  134.       CLOSE #1
  135.     ELSE
  136.       PRINT #2,"Sorry, no one is here to answer your call at the moment."+CHR$(13)+CHR$(10);
  137.       PRINT #2,"Please try back later."+CHR$(13)+CHR$(10);
  138.       PRINT #2
  139.     END IF
  140.   IF NoCarrier(0)<>0 THEN EXIT SUB
  141.   IF logfile$<>"" THEN
  142.     CLS : PRINT "Updating logfile";
  143.     OPEN logfile$ FOR APPEND AS #1
  144.     PRINT #1,"Answerer took a call at "+baudrate$+" baud at "+TIME$+" on "+DATE$+"."
  145.     CLOSE #1
  146.     END IF
  147.   IF NoCarrier(0)<>0 THEN EXIT SUB
  148.   IF msgfile$<>"" THEN
  149.     CLS
  150.     PRINT "Awaiting reply...";
  151.     PRINT #2
  152.     PRINT #2,"Press Y to leave a brief message, any other key to end."+CHR$(13)+CHR$(10);
  153.     IF INPUT$(1,#2)=="Y" THEN
  154.       CLS : PRINT "Getting message";
  155.       message$=INPUT$(LOF(2),#2)  'Discard any extra
  156.       PRINT #2,CHR$(13)+CHR$(10);
  157.       PRINT #2,"Please type your message below.  Press RETURN on a blank line"+CHR$(13)+CHR$(10);
  158.       PRINT #2,"to complete it."+CHR$(13)+CHR$(10);
  159.       PRINT #2,CHR$(13)+CHR$(10);
  160.       GetMessage message$
  161.       PRINT #2
  162.       PRINT #2,"Thanks."+CHR$(13)+CHR$(10);
  163.       OPEN msgfile$ FOR APPEND AS #1
  164.       PRINT #1,"Message left at "+TIME$+" on "+DATE$+":"
  165.       PRINT #1,message$
  166.       CLOSE #1
  167.       END IF
  168.     END IF
  169.   END SUB
  170.  
  171. SUB GetMessage (message$)
  172. STATIC inline$,done
  173.   message$=""
  174.   done=0
  175.   WHILE done=0 AND NoCarrier(0)=0
  176.     PRINT #2,"> ";
  177.     FullDuplexInput inline$
  178.     IF inline$="" THEN done=1 ELSE message$=message$+inline$+CHR$(10)
  179.     WEND
  180.   END SUB
  181.  
  182. SUB FullDuplexInput (inline$)
  183. STATIC c$
  184.   c$=INPUT$(1,#2)
  185.   inline$=""
  186.   WHILE c$<>CHR$(13) AND c$<>CHR$(10)
  187.     PRINT #2,c$;
  188.     IF c$=CHR$(8) OR c$=CHR$(127) THEN inline$=LEFT$(inline$,LEN(inline$)-1) ELSE inline$=inline$+c$
  189.     c$=INPUT$(1,#2)
  190.     WEND
  191.   PRINT #2
  192.   END SUB
  193.  
  194. SUB Hangup (maxbaud$)
  195.   WHILE NoCarrier(0)=0
  196.     CLS : PRINT "Hanging up...";
  197.     Delay 1
  198.     CLOSE #2
  199.     Delay 3
  200.     OPEN "COM1:"+maxbaud$+",N,8,1" AS #2
  201.     Delay 2
  202.     WEND
  203.   END SUB
  204.  
  205. SUB About
  206.   WINDOW 8,"About Answerer",(0,20)-(312,133),54
  207.   COLOR 2,1
  208.   CLS
  209.   PRINT PTAB(8,15);"Answerer  by Frank J. Perricone"
  210.   PRINT PTAB(8,27);"This program is in the public domain."
  211.   PRINT PTAB(8,35);"Any alterations must retain credit"
  212.   PRINT PTAB(8,43);"for the original author and a copy"
  213.   PRINT PTAB(8,51);"must be sent to him at:"
  214.   PRINT PTAB(16,63);"Frank J. Perricone"
  215.   PRINT PTAB(16,71);"2132 Lawson Creek Road"
  216.   PRINT PTAB(16,79);"Douglas AK 99824"
  217.   PRINT PTAB(8,91);"or uploaded to the Crystal Ship BBS,"
  218.   PRINT PTAB(8,99);"907-364-3362 3/12/2400 8N1 24hrs."
  219.   PRINT PTAB(8,111);" --- Click to continue... ---";
  220.   WHILE MOUSE(0)=0 : WEND
  221.   WINDOW CLOSE 8
  222.   WINDOW OUTPUT 1
  223.   END SUB
  224.  
  225. CloseBox:
  226.   CLS
  227.   PRINT "Closing down...";
  228.   CLOSE #2
  229.   OPEN "COM1:"+maxbaud$+",N,8,1" AS #2
  230.   Delay 2
  231.   PRINT #2,"+++";
  232.   Delay 2
  233.   PRINT #2,modemreset$+CHR$(13);
  234.   LINE INPUT #2,incoming$
  235.   LINE INPUT #2,incoming$
  236.   CLOSE #2
  237.   STOP -1
  238.  
  239.