home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / comm / answer32.zip / ANSWER.BAS next >
BASIC Source File  |  1985-08-14  |  17KB  |  398 lines

  1. 0100 '    The lines numbered 0100 thru 0166 MUST NOT BE ALTERED OR REMOVED!
  2. 0102 '    Enjoy this most useful little software offering!   This program is
  3. 0104 '    copyrighted, but it may be distributed in any media, provided that:
  4. 0106 '
  5. 0108 '    1. You do not alter or remove the REM statements out of the
  6. 0110 '       source code or alter the documentation in any way.
  7. 0112 '       That you include BOTH answer2.bas + answer2.doc in whatever
  8. 0114 '       media is chosen for distribution.
  9. 0116 '
  10. 0118 '    2. You do not DISTRIBUTE a modified version of this code. If you MUST
  11. 0120 '       modify the software,... use the accepted practice of creating a
  12. 0122 '       MERGE file to contain your changes.  In this way... any bugs which
  13. 0124 '       are fixed or new feature which are to be included can be done in a
  14. 0126 '       reasonably maintainable fashion.
  15. 0128 '
  16. 0130 '    3. Charge no fees for the distribution of this software beyond the
  17. 0132 '       minimal charge ($4 maximum) for a distribution diskette.
  18. 0134 '       If other programs are included on the diskette, do not charge
  19. 0136 '       more than once for the distribution diskette.
  20. 0138 '
  21. 0140 '
  22. 0142 '    If you would like to receive free updates of the program,
  23. 0144 '    send a donation ($20 is suggested for private use, $20 minimum for
  24. 0146 '    commercial or corporate usage is mandatory) to:
  25. 0148 '
  26. 0150 '                        Mike Sirmans
  27. 0152 '                        4022 Tanglewood Rd.
  28. 0154 '                        Snellville, GA  30278
  29. 0156 '                        Call:  ZAP!-BBS  (404) 972-3458
  30. 0158 '                        Supporting ASCII & XMODEM downloads
  31. 0160 '                        at 2400/1200/300 baud 24-hrs/day
  32. 0162 '
  33. 0164 '    (C) Copyright 1985 by Mike Sirmans, ALL RIGHTS RESERVED.
  34. 0166 '
  35. 1000 CLEAR:CLS:DEFINT A-Z:DEF SEG
  36. 1020 SYS$="MIKE":NM$="ZAP!-BBS":CP$="COM1":BA$="300":PW$="PASSWRD"
  37. 1021 REM
  38. 1022 REM   CHANGE THE DATA IN THE LINE ABOVE TO SUIT YOUR TASTES ...
  39. 1023 REM
  40. 1024 REM    SYS$ = System operator's FIRST name.
  41. 1025 REM    NM$  = Name of this system. (printed as: WELCOME TO ....... )
  42. 1026 REM    CP$  = Communications port.  Must be COM1 or COM2
  43. 1027 REM    BA$  = Open the communication port at this baud rate.
  44. 1028 REM    PW$  = Your REMOTE password list your messages (must be UPPER-case)
  45. 1029 REM
  46. 1030 SD$="ATM0Q1S2=255S10=30S0=0"
  47. 1040 CLS:KEY OFF:PR=1:LCL=0:UPD=1:UC=0:LOCATE ,,0
  48. 1060 ON ERROR GOTO 6080
  49. 1080 LOCATE  5,24:PRINT "▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄"
  50. 1100 LOCATE  6,24:PRINT "▌                                 ▐"
  51. 1120 LOCATE  7,24:PRINT "▌  ░▒▓▓▓  the ELECTRONIC   ▓▓▓▒░  ▐"
  52. 1140 LOCATE  8,24:PRINT "▌  ░▒▓▓▓ ANSWERING MACHINE ▓▓▓▒░  ▐"
  53. 1160 LOCATE  9,24:PRINT "▌                                 ▐"
  54. 1180 LOCATE 10,24:PRINT "▌ Original concept by: Sean Nolan ▐"
  55. 1200 LOCATE 11,24:PRINT "▌                                 ▐"
  56. 1220 LOCATE 12,24:PRINT "▌   Re-written by Mike Sirmans    ▐"
  57. 1240 LOCATE 13,24:PRINT "▌   Sysop: ZAP!-BBS Atlanta, GA   ▐"
  58. 1260 LOCATE 14,24:PRINT "▌   (404) 972-3458  24-hrs/day    ▐"
  59. 1280 LOCATE 15,24:PRINT "▌                                 ▐"
  60. 1300 LOCATE 16,24:PRINT "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
  61. 1310 LOCATE 22,13:PRINT "(C) Copyright 1985 by Mike Sirmans, ALL RIGHTS RESERVED."
  62. 1320 DEF FNTI!=CSNG(FIX((VAL(MID$(TIME$,1,2))*60*60)+(VAL(MID$(TIME$,4,2))*60)+(VAL(MID$(TIME$,7,2))*1))):DEF FNBL$="BLK"+RIGHT$("0000"+RIGHT$(STR$(BLK),LEN(STR$(BLK))-1),5)
  63. 1340 DEF FNS$(A1$,A)=A1$+SPACE$(A-LEN(A1$))
  64. 1360 BK$=CHR$(8)+CHR$(32)+CHR$(8):BK1$=CHR$(29)+CHR$(32)+CHR$(29)
  65. 1380 IF CP$="COM2" THEN LSB=&H2F8:MSB=&H2F9:LCR=&H2FB:MCR=&H2FC:LSR=&H2FD:MSR=&H2FE ELSE LSB=&H3F8:MSB=&H3F9:LCR=&H3FB:MCR=&H3FC:LSR=&H3FD:MSR=&H3FE
  66. 1400 OPEN "I",2,"ANSWER.DEF":INPUT #2,BP$,CH$,NUM,MUN:CLOSE #2
  67. 1420 KEY 1,"":KEY (1) ON:ON KEY(1) GOSUB 6200
  68. 1440 KEY 2,"":KEY (2) ON:ON KEY(2) GOSUB 6300
  69. 1460 KEY 3,"":KEY (3) ON:ON KEY(3) GOSUB 6260
  70. 1480 KEY 4,"":KEY (4) ON:ON KEY(4) GOSUB 6280
  71. 1500 DIM LI$(100):M$=CHR$(10)+CHR$(13)
  72. 1540 REM
  73. 1560 REM ------------------- BEGINNING OF PROGRAM LOGIC --------------------
  74. 1580 REM
  75. 1600 IF INP(MSR)<128 THEN OUT MCR,&H4:GOSUB 6460:OUT MCR,&H0
  76. 1620 CLOSE:OPEN CP$+":"+BA$+",N,8,1,RS,CD,DS" AS #3
  77. 1640 PR=0:A$="ATZ":GOSUB 6500:GOSUB 6460:A$=SD$:GOSUB 6500:PR=1
  78. 1660 CLS
  79. 1680 LOCATE 17,24:PRINT "░▒▓▓▓  the ELECTRONIC   ▓▓▓▒░"
  80. 1700 LOCATE 18,24:PRINT "░▒▓▓▓ ANSWERING MACHINE ▓▓▓▒░"
  81. 1720 LOCATE 22,13:PRINT "(C) Copyright 1985 by Mike Sirmans, ALL RIGHTS RESERVED."
  82. 1740 LOCATE 3,24
  83. 1760 PRINT "STANDBY...";
  84. 1780 UPD=0:GOSUB 6660:UPD=1
  85. 1788 LOCATE 3,24
  86. 1790 PRINT "Ready at ";TIME$;" on ";DATE$;
  87. 1800 WE$=INKEY$
  88. 1820 IF WE$="X" OR WE$="x" THEN LOCATE 22,13:PRINT "           PROGRAM TERMINATED...                        ":SYSTEM:END
  89. 1840 IF WE$="L" OR WE$="l" THEN 2000
  90. 1850 IF WE$="R" OR WE$="r" THEN GOSUB 6350
  91. 1860 IF(INP(MSR)AND &H40)=0 THEN GOTO 1800
  92. 1880 REM -----------------------------------------------------------------
  93. 1900 PR=0:A$="ATQ0X1V1A":GOSUB 6500:TCC!=FNTI!+30:DF$="":PR=1
  94. 1920 IF INP(MSR)<128 AND FNTI!<TCC! THEN 1920 ELSE IF INP(MSR)<128 THEN 2740 ELSE GOSUB 6460
  95. 1940 IF LOC(3)<>0 THEN DF$=DF$+INPUT$(LOC(3),3) ELSE 1965
  96. 1960 IF INSTR(DF$,"CONNECT") THEN QQ=VAL(MID$(DF$,INSTR(DF$,"CONNECT")+8,4)):GOTO 2020
  97. 1965 IF FNTI!=>TCC! THEN 2740 ELSE 1920
  98. 1980 REM -----------------------------------------------------------------
  99. 2000 PR=0:A$="ATQ1E1H1M0":GOSUB 6500:CLOSE #3:PR=1:LCL=1:GOTO 2040
  100. 2020 GOSUB 21280:IF QQ=0 OR QQ=300 THEN Q=&H180:BPS=-1:GOSUB 11654 ELSE IF QQ=1200 OR QQ=2400 THEN BPS=-2-(QQ/1200):Q=48*(BPS+5):GOSUB 11654 ELSE 1940
  101. 2040 CLS:CNCT=1
  102. 2060 A$="WELCOME TO "+NM$+CHR$(10)+CHR$(13):GOSUB 6500
  103. 2070 M$=CHR$(13)
  104. 2080 IF LCL=1 THEN 2220 
  105. 2090 MUN=MUN+1:GOSUB 6970
  106. 2100 GOSUB 6340:GOSUB 6460
  107. 2120 PRINT "Do you need linefeeds (Y/N) ? ";
  108. 2140 PRINT #3,"Do you need linefeeds (Y/N) ? ";
  109. 2160 GOSUB 5720
  110. 2180 IF LEFT$(B$,1)="n" OR LEFT$(B$,1)="N" THEN 2201
  111. 2200 M$=CHR$(10)+CHR$(13)
  112. 2201 PRINT M$+"Enter your REAL First Name: ";
  113. 2202 PRINT #3,M$+"Enter your REAL First Name: ";
  114. 2203 UC=1:GOSUB 5720:UC=0:FR1$=B$
  115. 2204 PRINT "Enter your REAL Last Name: ";
  116. 2205 PRINT #3,"Enter your REAL Last Name: ";
  117. 2206 UC=1:GOSUB 5720:UC=0:FR2$=B$
  118. 2207 PRINT M$+"Your name is - ";FR1$;" ";FR2$;" ...right ? ";
  119. 2208 PRINT #3,M$+"Your name is - ";FR1$;" ";FR2$;" ...right ? ";
  120. 2209 GOSUB 5720
  121. 2210 IF LEFT$(B$,1)="y" OR LEFT$(B$,1)="Y" THEN 2212
  122. 2211 A$=M$+M$:GOSUB 6500:GOTO 2201
  123. 2212 OPEN "MESSAGES" FOR APPEND AS #2
  124. 2213 PRINT #2, STRING$(50,"-");CHR$(13);CHR$(10);
  125. 2214 PRINT #2, DATE$;"  ";TIME$;"  Caller #";MUN;" ... "FR1$;" ";FR2$;CHR$(13);CHR$(10);
  126. 2215 CLOSE #2
  127. 2220 A$=M$:GOSUB 6500
  128. 2240 OPEN "OUTMSG" FOR INPUT AS #2
  129. 2260 WHILE NOT EOF(2)
  130. 2280 A$=INPUT$(1,#2)
  131. 2300 IF A$=CHR$(8)  THEN GOSUB 3340:GOTO 2380
  132. 2320 IF A$=CHR$(10) THEN 2380
  133. 2340 IF A$=CHR$(13) THEN PRINT:IF LCL=0 THEN PRINT #3,M$;:GOTO 2380 ELSE GOTO 2380
  134. 2360 PRINT A$;:IF LCL=0 THEN PRINT #3,A$;
  135. 2380 WEND
  136. 2400 CLOSE #2
  137. 2420 A$=M$:GOSUB 6500
  138. 2440 A$="Main functions":GOSUB 6500
  139. 2460 PRINT "E)nter msg  O)perator page  G)oodbye  ?)Help : ";
  140. 2480 IF LCL=0 THEN PRINT #3,"E)nter msg  O)perator page  G)oodbye  ?)Help : ";
  141. 2500 GOSUB 5720
  142. 2520 C$=LEFT$(B$,1) 
  143. 2540 IF C$="E" OR C$="e" THEN 3580
  144. 2560 IF C$="O" OR C$="o" THEN 2820
  145. 2580 IF C$="G" OR C$="g" THEN 2680
  146. 2600 IF C$="~" THEN 4920
  147. 2620 IF C$="?" THEN 3460
  148. 2640 A$="Invalid command!":GOSUB 6500
  149. 2660 GOTO 2420
  150. 2680 CLOSE #2
  151. 2685 A$=M$:GOSUB 6500
  152. 2690 OPEN "BYEMSG" FOR INPUT AS #2
  153. 2695 WHILE NOT EOF(2)
  154. 2700 A$=INPUT$(1,#2)
  155. 2705 IF A$=CHR$(8)  THEN GOSUB 3340:GOTO 2725
  156. 2710 IF A$=CHR$(10) THEN 2725
  157. 2715 IF A$=CHR$(13) THEN PRINT:IF LCL=0 THEN PRINT #3,M$;:GOTO 2725 ELSE GOTO 2725
  158. 2720 PRINT A$;:IF LCL=0 THEN PRINT #3,A$;
  159. 2725 WEND
  160. 2730 CLOSE #2:FOR I=1 TO 2:GOSUB 6460:NEXT I
  161. 2740 CLOSE #3:GOTO 1000
  162. 2750 '
  163. 2820 IF CH$="ON " THEN 2880
  164. 2840 A$=M$+"Sorry, "+SYS$+" isn't around right now.  Try again later...":GOSUB 6500
  165. 2860 GOTO 2420
  166. 2880 A$=M$+"Please, stand by.":GOSUB 6500
  167. 2900 PRINT "Paging SYSOP ";:IF LCL=0 THEN PRINT #3,"Paging SYSOP ";
  168. 2920 A$="."
  169. 2940 FOR E=1 TO 30
  170. 2960 PRINT A$;:IF LCL=0 THEN PRINT #3,A$;
  171. 2980 IF BP$="ON " THEN BEEP
  172. 3000 GOSUB 6460
  173. 3020 NEXT E
  174. 3040 A$=M$+"Sorry, "+SYS$+" just doesn't seem to be around at the moment...":GOSUB 6500
  175. 3060 A$="Until then, just leave a message if you will..."+M$:GOSUB 6500
  176. 3080 GOTO 2420
  177. 3100 IF LCL=1 THEN PRINT M$+"CHAT is not supported in LOCAL-mode !":GOSUB 6460:GOTO 2420
  178. 3110 A$=M$+"*** ATTENTION *** Sysop is ONLINE !"+M$:GOSUB 6500
  179. 3120 LOCATE ,,1
  180. 3121 REM
  181. 3122 REM ------------- CHAT SUPPORT ROUTINE ---------------
  182. 3123 REM
  183. 3130 WHILE EOF(3)
  184. 3131 IF POS(0)>79 THEN PRINT:PRINT #3,M$;:GOTO 3130
  185. 3132 A$=INKEY$:IF LEN(A$)>1 THEN GOSUB 6340:GOTO 3130
  186. 3138 IF A$=CHR$(8) OR A$=CHR$(7) OR A$=CHR$(26) OR A$=CHR$(227) OR A$=CHR$(127) THEN 3200 ELSE IF A$=CHR$(27) THEN 3400
  187. 3140 IF A$=CHR$(13) AND LCL=0 THEN PRINT:PRINT#3,M$;:GOTO 3130
  188. 3150 IF A$<>"" THEN 3190
  189. 3160 WEND
  190. 3180 A$=INPUT$(1,3):IF A$=CHR$(8) OR A$=CHR$(7) OR A$=CHR$(26) OR A$=CHR$(227) THEN 3200
  191. 3185 IF A$=CHR$(13) THEN PRINT:PRINT #3,M$;:GOTO 3130
  192. 3190 PRINT A$;:PRINT #3,A$;:GOTO 3130
  193. 3200 GOSUB 3340:GOTO 3130
  194. 3290 REM
  195. 3291 REM ------------- END OF CHAT ROUTINE ----------------
  196. 3292 REM
  197. 3340 IF POS(0)>1 THEN PRINT BK1$;:IF LCL=0 THEN PRINT#3,BK$;
  198. 3360 RETURN
  199. 3400 A$=M$+M$+"CHAT terminated...":GOSUB 6500
  200. 3420 LOCATE ,,0
  201. 3440 GOTO 2420
  202. 3460 A$=M$+"Help !!!"+M$:GOSUB 6500
  203. 3480 A$="E)nter ........... You can enter a message to operator":GOSUB 6500
  204. 3500 A$="O)perator page ... See if "+SYS$+"'s available to CHAT":GOSUB 6500
  205. 3520 A$="G)oodbye ......... Logoff system":GOSUB 6500
  206. 3540 A$="?)Help ........... This help file":GOSUB 6500
  207. 3560 GOTO 2420
  208. 3580 A$=M$+"Enter a message to Sysop"+M$:GOSUB 6500
  209. 3600 FOR I=1 TO 60
  210. 3620 LI$(I)=""        'clear out dim-array
  211. 3640 NEXT
  212. 3760 A$=M$+"Enter YOUR message here... you are limited to a maximum of 60 lines.":GOSUB 6500
  213. 3780 A$="IMPORTANT! Enter a NULL (blank) line to END-message entry."+M$:GOSUB 6500
  214. 3800 L=1:UC=0
  215. 3820 IF L=60 THEN LI$(L)="***END***":GOTO 3940
  216. 3840 PRINT ">";:IF LCL=0 THEN PRINT #3,">";
  217. 3860 GOSUB 5720
  218. 3880 IF B$="" THEN LI$(L)="***END***":GOTO 3940
  219. 3900 LI$(L)=B$
  220. 3920 L=L+1:GOTO 3820
  221. 3940 A$=M$+"Editing Subfunction":GOSUB 6500
  222. 3960 PRINT "E)dit, L)ist, C)ontinue, N)ew, A)bort, S)ave, ?)Help : ";
  223. 3980 IF LCL=0 THEN PRINT #3, "E)dit, L)ist, C)ontinue, N)ew, A)bort, S)ave, ?)Help : ";
  224. 4000 GOSUB 5720
  225. 4020 C$=LEFT$(B$,1)
  226. 4060 IF C$="E" OR C$="e" THEN 4720
  227. 4080 IF C$="L" OR C$="l" THEN 4580
  228. 4100 IF C$="C" OR C$="c" THEN 3820
  229. 4120 IF C$="N" OR C$="n" THEN 3580
  230. 4140 IF C$="A" OR C$="a" THEN 2420
  231. 4160 IF C$="S" OR C$="s" THEN 4380
  232. 4170 IF C$="?" THEN 4200
  233. 4180 A$="Invalid command!":GOSUB 6500
  234. 4190 GOTO 3940
  235. 4200 A$=M$+"Help (again) !!!"+M$:GOSUB 6500
  236. 4220 A$="E)dit ....... Allows you to make changes & fix message":GOSUB 6500
  237. 4240 A$="L)ist ....... Print message back to you so you can REVIEW it":GOSUB 6500
  238. 4260 A$="C)ontinue ... Allows you to continue to add lines to message":GOSUB 6500
  239. 4280 A$="N)ew ........ Start over":GOSUB 6500
  240. 4300 A$="A)bort ...... Zap message & quit":GOSUB 6500
  241. 4320 A$="S)ave ....... write message to file for SYSOP":GOSUB 6500
  242. 4340 A$="?)Help ...... This file"+M$:GOSUB 6500
  243. 4360 GOTO 3940
  244. 4380 L=1
  245. 4400 OPEN "MESSAGES" FOR APPEND AS #2
  246. 4420 PRINT #2, CHR$(13);CHR$(10);
  247. 4440 IF LI$(L)="***END***" THEN 4500
  248. 4460 PRINT #2, LI$(L);CHR$(13);CHR$(10);
  249. 4480 L=L+1:GOTO 4440
  250. 4500 CLOSE #2
  251. 4520 A$=M$+"Message saved":GOSUB 6500
  252. 4540 NUM=NUM+1:GOSUB 6970
  253. 4560 GOTO 2420
  254. 4580 L=1
  255. 4600 IF LI$(L)="***END***" THEN 4680
  256. 4620 FM$=STR$(L)
  257. 4640 A$=FM$+":"+LI$(L):GOSUB 6500
  258. 4660 L=L+1:GOTO 4600
  259. 4680 A$=M$:GOSUB 6500
  260. 4700 GOTO 3940
  261. 4720 PRINT M$+"Enter line number to EDIT or...  Q to quit : ";
  262. 4740 IF LCL=0 THEN PRINT #3,M$+"Enter line number to EDIT or...  Q to quit : ";
  263. 4760 GOSUB 5720
  264. 4780 IF LEFT$(B$,1)="Q" OR LEFT$(B$,1)="q" THEN 3940
  265. 4800 PL=VAL(B$)
  266. 4820 A$=">"+LI$(PL):GOSUB 6500
  267. 4840 PRINT ">";:IF LCL=0 THEN PRINT #3,">";
  268. 4860 GOSUB 5720
  269. 4880 LI$(PL)=B$
  270. 4900 GOTO 4720
  271. 4920 A$=M$+"---------------------":GOSUB 6500
  272. 4940 A$=   "  LIST MESSAGE FILE  ":GOSUB 6500
  273. 4960 A$=   "---------------------"+M$:GOSUB 6500
  274. 4980 PRINT"Enter YOUR access code: ";:IF LCL=0 THEN PRINT #3,"Enter YOUR access code: ";
  275. 5000 UC=-1:GOSUB 5720:UC=0
  276. 5020 IF B$=PW$ THEN 5060
  277. 5040 A$="AUTHORIZATION FAILURE"+M$:GOSUB 6500:GOTO 2420
  278. 5060 OPEN "MESSAGES" FOR INPUT AS #2:GOTO 5200
  279. 5080 A$=M$+"Sorry, no MESSAGES at this time.":GOSUB 6500:GOTO 2420
  280. 5200 A$=M$+"Press <SPACE> to stop/start, <ESC> to quit"+M$:GOSUB 6500:PA=1
  281. 5210 TCC!=FNTI!+180
  282. 5220 WHILE NOT EOF(2)
  283. 5240 IF LCL=1 THEN 5300
  284. 5250 IF EOF(3) THEN 5300
  285. 5260 UU$=LEFT$(INPUT$(LOC(3),#3),1)
  286. 5280 IF UU$=" " THEN GOSUB 5699:GOTO 5240
  287. 5290 IF UU$=CHR$(27) THEN 5660
  288. 5300 YY$=INKEY$
  289. 5320 IF YY$=" " THEN GOSUB 5699:GOTO 5240
  290. 5340 IF YY$=CHR$(27) THEN 5660
  291. 5400 IF PA=0 THEN 5440
  292. 5420 IF FNTI!<TCC! THEN 5240 ELSE 1000
  293. 5440 A$=INPUT$(1,#2)
  294. 5460 IF A$=CHR$(8)  THEN GOSUB 3340:GOTO 5640
  295. 5480 IF A$=CHR$(10) THEN 5640
  296. 5500 IF A$=CHR$(13) THEN PRINT:IF LCL=0 THEN PRINT #3,M$;:GOTO 5640 ELSE GOTO 5640
  297. 5520 PRINT A$;:IF LCL=0 THEN PRINT #3,A$;
  298. 5640 WEND
  299. 5660 CLOSE #2
  300. 5680 A$=M$+"<END-of-File>"+M$:GOSUB 6500:GOTO 2420
  301. 5699 TCC!=FNTI!+180:IF PA=0 THEN PA=1:RETURN ELSE PA=0:RETURN
  302. 5700 REM
  303. 5710 REM ---------- FETCH RESPONSE (TIMES OUT IN 3-MINUTES) ----------
  304. 5712 REM
  305. 5720 B$="":TCC!=FNTI!+180:LOCATE ,,1
  306. 5725 IF LCL=1 THEN 5740
  307. 5730 IF EOF(3) THEN 5740
  308. 5735 A$=INPUT$(LOC(3),3):GOSUB 6440:GOTO 5730
  309. 5740 A$=""
  310. 5760 IF LCL=1 THEN 5800
  311. 5762 IF(INP(MSR)AND &H80)=0 THEN 1000
  312. 5770 IF EOF(3) THEN 5800
  313. 5780 IF LOC(3)<>0 THEN A$=INPUT$(1,#3)
  314. 5800 Y$=INKEY$:IF Y$<>"" THEN A$=Y$
  315. 5810 IF A$="" THEN 5980
  316. 5812 TCC!=FNTI!+180
  317. 5820 IF A$=CHR$(8) AND LEN(B$)=0 THEN 5980
  318. 5840 IF A$=CHR$(8) THEN B$=LEFT$(B$,LEN(B$)-1):GOSUB 3340:GOTO 5980
  319. 5860 IF A$=CHR$(10) THEN 5980
  320. 5880 IF A$=CHR$(13) THEN 6020
  321. 5900 IF UC<>0 THEN IF (ASC(A$)>96) AND (ASC(A$)<123) THEN A$=CHR$(ASC(A$)-32)
  322. 5920 IF LEN(B$)>77 AND LCL=0 THEN PRINT #3,CHR$(7);:GOTO 5980
  323. 5940 B$=B$+A$
  324. 5960 IF UC=-1 THEN A$="."
  325. 5970 PRINT A$;:IF LCL=0 THEN PRINT #3,A$;
  326. 5980 IF FNTI!<TCC! THEN 5740
  327. 6000 GOTO 1000
  328. 6020 IF LCL=0 THEN PRINT #3,M$;
  329. 6040 PRINT M$;
  330. 6060 LOCATE ,,0:RETURN
  331. 6080 IF ERR=53 AND ERL=1400 THEN OPEN "O",2,"ANSWER.DEF":WRITE #2,"ON ","ON ",0,0:CLOSE #2:RESUME 1400
  332. 6082 IF ERR=53 AND ERL=6980 THEN OPEN "O",2,"ANSWER.DEF":WRITE #2,"ON ","ON ",0,0:CLOSE #2:RESUME 7000
  333. 6084 IF ERR=55 AND ERL=6980 THEN RESUME 6990
  334. 6086 IF ERR=52 AND ERL=6990 THEN RESUME 6980
  335. 6088 IF ERR=57 AND ERL=1940 THEN RESUME 1965
  336. 6090 IF ERR=53 AND ERL=2240 THEN RESUME 2420
  337. 6091 IF ERR=53 AND ERL=5060 THEN RESUME 5080
  338. 6092 IF ERR=53 AND ERL=2690 THEN RESUME 2740
  339. 6100 GOSUB 6340:LOCATE 21,1:PRINT "*** ERROR: ";ERR;" OCCURRED ON LINE: ";ERL;" ***";:GOSUB 6460
  340. 6120 IF ERR=69 THEN RESUME 1000
  341. 6140 IF ERR=57 THEN RESUME 1000
  342. 6160 IF CNCT=0 AND LCL=0 THEN RESUME 2420 ELSE RESUME 1000
  343. 6180 DATA "MESSAGES","OUTMSG","QWERTY"
  344. 6200 IF CH$="ON " THEN CH$="OFF":GOTO 6240
  345. 6220 IF CH$="OFF" THEN CH$="ON "
  346. 6240 IF CNCT=0 THEN GOSUB 6660:RETURN ELSE GOSUB 6980:RETURN
  347. 6260 IF CNCT=0 THEN GOSUB 6340:RETURN ELSE GOSUB 3100:RETURN
  348. 6280 RETURN 1000
  349. 6300 IF BP$="ON " THEN BP$="OFF":GOTO 6240
  350. 6320 IF BP$="OFF" THEN BP$="ON ":GOTO 6240
  351. 6340 IF BP$="ON " THEN BEEP:RETURN ELSE RETURN
  352. 6350 NUM=0:MUN=0:GOTO 6240
  353. 6380 REM
  354. 6400 REM ----------- SUPPORT ROUTINE FOR COMMUNICATIONS TIMING -----------
  355. 6420 REM
  356. 6440 DE!=FNTI!+1:GOTO 6480
  357. 6460 DE!=FNTI!+3
  358. 6480 IF FNTI!<DE! AND DE!< 86400! THEN 6480 ELSE RETURN
  359. 6500 WHILE (INP(MSR)AND &H40):WEND  
  360. 6520 GOSUB 6440
  361. 6530 IF LCL=0 THEN PRINT #3,A$+M$;
  362. 6540 IF PR=0 THEN RETURN ELSE PRINT A$
  363. 6580 RETURN
  364. 6600 REM
  365. 6620 REM ------- DISPLAY CHANGE IN STATUS FOR F1 & F2 / WRITE TO DISK -------
  366. 6640 REM
  367. 6660 LOCATE 5,24
  368. 6680 PRINT "<F1> to toggle CHAT... chat is ";CH$
  369. 6700 LOCATE 6,24
  370. 6720 PRINT "<F2> to toggle BEEP... beep is ";BP$
  371. 6740 LOCATE 7,24
  372. 6760 PRINT "<F3> at any time to BREAK into CHAT"
  373. 6780 LOCATE 8,24
  374. 6800 PRINT "<F4> at any time to disconnect user"
  375. 6820 LOCATE 9,24
  376. 6840 PRINT "<X>  to end program"
  377. 6860 LOCATE 10,24
  378. 6880 PRINT "<L>  to enter LOCAL mode processing"
  379. 6890 LOCATE 11,24
  380. 6892 PRINT "<R>  to RESET number of msgs/callers"
  381. 6900 LOCATE 13,24
  382. 6920 PRINT "Number of Messages.... ";NUM
  383. 6940 LOCATE 14,24
  384. 6960 PRINT "Number of Calls....... ";MUN
  385. 6970 IF UPD=0 THEN RETURN
  386. 6980 OPEN "O",2,"ANSWER.DEF"
  387. 6990 WRITE #2,BP$,CH$,NUM,MUN:CLOSE #2
  388. 7000 RETURN
  389. 8000 REM
  390. 8001 REM ---------- CHANGE MSR & LCR TO ADAPT TO CALLERS COMM SETTINGS --------
  391. 8002 REM
  392. 11654 R1=INP(LCR):DF=INP(MSB):OUT MSB,0:OUT LCR,R1 OR 128:IF Q=384 THEN OUT LSB,&H80:OUT MSB,&H1:GOTO 11684
  393. 11662 IF Q=256 THEN OUT LSB,&H0:OUT MSB,&H1:GOTO 11684
  394. 11664 IF Q=96 THEN OUT LSB,&H60:OUT MSB,&H0:GOTO 11684
  395. 11666 IF Q=48 THEN OUT LSB,&H30:OUT MSB,&H0
  396. 11684 OUT LCR,R1:OUT MSB,DF:RETURN
  397. 21280 WHILE NOT EOF(3):DF$=INPUT$(LOC(3),3):WEND:RETURN
  398.