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 / BBSING / RBBS / RBBS40.LBR / RBBS40.BQS / RBBS40.BAS
BASIC Source File  |  2000-06-30  |  25KB  |  649 lines

  1. 10 DEFINT A-Z
  2. 20 DIM A$(25),M(150,2)
  3. 30 '
  4. 40 VERS2$=" Version 4.0, 1/11/85 "
  5. 50 SYS3$="SYSOP"
  6. 60 PC$="What is the DRI Debugger"
  7. 70 DSK$="A:":ERS$=CHR$(8)+" "+CHR$(8):BSL$=CHR$(8)+"/"+CHR$(8)
  8. 80 ANS1$=" >> Not a verified user << "
  9. 90 TWIT$=" "
  10. 100 BEEP=10000
  11. 110 SIZE=24
  12. 120 POKE 0,&HCD
  13. 130 INC=1
  14. 140 ON ERROR GOTO 4660
  15. 150 RFLG=PEEK(&H5D):POKE &H5D,&H20
  16. 160 RTNOKFLG=PEEK(&H5B):POKE &H5B,120 
  17. 170 SELC$="0"
  18. 180 MSGS=1:CALLS=MSGS+1:MNUM=CALLS+1:NW=0
  19. 190 OPEN "I",1,"A:PWDS":IF EOF(1) THEN 220
  20. 200 '
  21. 210 INPUT #1,P1$,VAP$,P2$,P3$,PC$,DSK$,DSK2$,TWIT$,BEEP,SIZE,VERS1$,SYS1$,SYS2$
  22. 220 CLOSE #1
  23. 230 BK=0:GOSUB 4440:A$=VERS1$:N=1:GOSUB 4440
  24. 240 PRINT:PRINT
  25. 250 BEL=-1:XPR=0
  26. 260 A$=VERS2$:N=1:GOSUB 4440:GOSUB 4440:GOSUB 4440:SAV$=""
  27. 270 IF RFLG<>ASC("P") THEN 370
  28. 280 IF RTNOKFLG<>ASC("x") THEN 370
  29. 290 V=0:INC=0
  30. 300 OPEN "I",1,DSK2$+"LASTCALR":INPUT #1,N$,O$:CLOSE
  31. 310 A$="Welcome back, "
  32. 320 IF N$<>SYS3$ THEN 340
  33. 330 CN$=N$:O$="":CO$=O$:A$=A$+N$+".":GOSUB 4440:GOSUB 4440:V=1:GOTO 750
  34. 340 GOSUB 6060:V=1
  35. 350 A$=A$+CN$+" "+CO$+".":GOSUB 4440:GOSUB 4440
  36. 360 T01$=N$:T02$=O$:GOSUB 5540:MF$=MFJ$:GOTO 750
  37. 370 IF NOT BK THEN NW=1
  38. 380 GOSUB 4440:BK=0
  39. 390 GOSUB 4440
  40. 400 A1$="Enter your FIRST Name: ":N=1:GOSUB 4440
  41. 410 C=1:GOSUB 4550:N$=B$:IF N$="" THEN 400
  42. 420 IF N$=P1$ THEN POKE &H5B,0:GOTO 1460
  43. 430 IF N$<"A" OR LEN(N$)=1 THEN 400
  44. 440 A1$="Enter your LAST Name:  ":N=1:GOSUB 4440
  45. 450 C=1:IF N$=SYS3$ THEN C=2
  46. 460 GOSUB 4550:O$=B$:IF O$="" THEN 400
  47. 470 IF O$<"A" OR LEN(O$)=1 THEN 400
  48. 480 IF N$=SYS3$ AND O$=P2$ THEN O$="":CN$=N$:CO$="":GOTO 700
  49. 490 IF N$=SYS3$ THEN 400
  50. 500 A$="Checking User file...":GOSUB 4440
  51. 510 V=0:T01$=N$:T02$=O$:OK=0:GOSUB 5540:IF OK THEN MF$=MFJ$:GOTO 520 ELSE 560
  52. 520 T=0
  53. 530 T=T+1:IF T=4 THEN 3850 ELSE A1$="Enter your PASSWORD: "
  54. 540 N=1:GOSUB 4440:C=2:GOSUB 4550:UPW$=B$:IF UPW$="" THEN 530
  55. 550 IF UPW$=S04$ THEN 700 ELSE 530
  56. 560 A1$="Are you a New User? ":GOSUB 5740
  57. 570 IF NOT OK THEN A$="OK, let's try again.":GOSUB 4440:GOTO 400
  58. 580 V=1:GOSUB 5370
  59. 590 A1$="Enter YOUR City, State: ":N=1:GOSUB 4440
  60. 600 C=1:GOSUB 4550:S03$=B$:IF S03$="" THEN 590
  61. 610 GOSUB 6060
  62. 620 A$="Hello "+CN$+" "+CO$+" from "+S03$:GOSUB 4440
  63. 630 A1$="Is anything misspelled? ":GOSUB 5740:IF OK THEN 400
  64. 640 HM=0:S05$=STR$(HM):S$="  "+N$+";"+O$+";"+S03$+";"+S04$+";"+S05$
  65. 650 OPEN "R",1,DSK$+"USERS",62:FIELD#1,62 AS RR$
  66. 660 RL=62:GOSUB 4770:NU=NU+1:PUT#1,NU+1:S$=STR$(NU):GOSUB 4770:PUT#1,1:CLOSE
  67. 670 FIL$="NEWCOM":GOSUB 4920
  68. 680 FIL$="INFO":GOSUB 4920
  69. 690 FIL$="BULLETIN":GOSUB 4920:MF$=" "
  70. 700 A$="Logging name to disk...":GOSUB 4440:RE=1
  71. 710 OPEN "R",1,DSK$+"CALLERS",60:FIELD#1,60 AS RR$:GET#1,1:RE=VAL(RR$)+1
  72. 720 S$=STR$(RE):RL=60:GOSUB 4770:PUT#1,1:RE=RE+1
  73. 730 S$=N$+" "+O$+" "+S03$:GOSUB 4770:PUT#1,RE:CLOSE#1
  74. 740 OPEN "O",1,DSK2$+"LASTCALR":PRINT #1,N$;",";O$:CLOSE
  75. 750 PRINT
  76. 760 IF MF$<>"*" GOTO 780
  77. 770 IF TWIT$="*" THEN GOTO 6370
  78. 780 IF V=0 THEN IF N$<>SYS3$ THEN GOSUB 6060
  79. 790 BK=0:GOSUB 4440:CN=1:M=0:U=0
  80. 800 OPEN "R",1,DSK2$+"COUNTERS."+SELC$,5:FIELD#1,5 AS RR$
  81. 810 GET#1,CALLS:CN=VAL(RR$)+INC
  82. 820 GET#1,MSGS:M=VAL(RR$)
  83. 830 GET#1,MNUM:U=VAL(RR$)
  84. 840 A$="You are User number:       ":N=1:GOSUB 4440
  85. 850 A$=STR$(CN):LSET RR$=A$
  86. 860 A$=SPACE$(4-LEN(STR$(CN)))+STR$(CN):GOSUB 4440:PUT#1,CALLS:GOSUB 4440
  87. 870 A$="Number of Active Messages:  ":N=1:GOSUB 4440
  88. 880 A$=SPACE$(4-LEN(STR$(M)))+STR$(M):GOSUB 4440
  89. 890 A$="Last System Message Number: ":N=1:GOSUB 4440
  90. 900 A$=SPACE$(4-LEN(STR$(U)))+STR$(U):GOSUB 4440:CLOSE
  91. 910 GOSUB 4440:IHM=HM
  92. 920 FT=-1:MX=0:MZ=0:IU=0:CNT=0:G=0
  93. 930 OPEN "R",1,DSK2$+"SUMMARY."+SELC$,30:RE=1:FIELD#1,28 AS RR$
  94. 940 BK=0:GET#1,RE:IF EOF(1) THEN 1090
  95. 950 G=VAL(RR$):MZ=MZ+1:M(MZ,1)=G:IF G=0 THEN 1080
  96. 960 IF IU=0 THEN IU=G
  97. 970 IF G>9998 THEN MZ=MZ-1:GOTO 1090
  98. 980 GET#1,RE+3:GOSUB 4800
  99. 990 I=INSTR(S$," "):IF I=0 THEN S1$=S$:S2$="":GOTO 1010
  100. 1000 S1$=LEFT$(S$,I-1):S2$=MID$(S$,I+1)
  101. 1010 IF S1$=N$ AND S2$=O$ THEN 1050
  102. 1020 IF N$<>SYS3$ THEN 1080
  103. 1030 IF S1$<>SYS1$ AND S2$<>SYS2$ THEN 1080
  104. 1040 IF S2$<>SYS2$ THEN 1080
  105. 1050 IF NOT FT THEN 1070
  106. 1060 GOSUB 4440:A$=CN$+", you have mail:":GOSUB 4440:GOSUB 4440:FT=0
  107. 1070 RX=RE:GOSUB 3410:RE=RX:CNT=CNT+1
  108. 1080 GET#1,RE+5:M(MZ,2)=VAL(RR$):MX=MX+M(MZ,2)+6:RE=RE+6:GOTO 940
  109. 1090 IF CNT=0 THEN 1130 ELSE GOSUB 4440:A$="Please [R]etrieve and [K]ill "
  110. 1100 IF CNT=1 THEN A$=A$+"this message."
  111. 1110 IF CNT>1 THEN A$=A$+"these messages."
  112. 1120 GOSUB 4440:GOSUB 4440
  113. 1130 CLOSE
  114. 1140 '
  115. 1150 A1$="Command: "
  116. 1160 IF NOT XPR THEN A1$=A1$+"B,E,R,S,K,G,J,U,T,X,P,C,N,O (or ?): "
  117. 1170 N=1:GOSUB 4440:C=1:GOSUB 4550
  118. 1180 IF B$="" THEN 1150
  119. 1190 FF=INSTR("BER?SKGJUTXPXOC",B$):GOSUB 1200:GOTO 1150
  120. 1200 IF FF=0 THEN 1220
  121. 1210 ON FF GOTO 1500,1540,2620,1520,3070,3920,3610,1270,4270,4900,4880,5460,6070,6390,6070
  122. 1220 '
  123. 1230 IF B$="N" THEN GOSUB 6340:RETURN
  124. 1240 GOSUB 4440
  125. 1250 A$="I don't understand '"+B$+"', "+CN$+".":GOSUB 4440:GOSUB 4440
  126. 1260 SAV$="":RETURN
  127. 1270 '
  128. 1280 IF N$=SYS3$ THEN 1340
  129. 1290 IF MF$="&" THEN 1340
  130. 1300 PRINT
  131. 1310 PRINT">>Not a verified user<<"
  132. 1320 PRINT
  133. 1330 GOTO 1140
  134. 1340 GOSUB 4440:T=0
  135. 1350 IF N$=SYS3$ THEN 1470
  136. 1360 IF MF$<>"*" THEN 1380
  137. 1370 A$=ANS1$:GOSUB 4440:SAV$="":RETURN
  138. 1380 IF P3$="NOPASS" THEN 1420
  139. 1390 T=T+1:IF T=2 THEN GOSUB 4440:GOSUB 4440:RETURN
  140. 1400 A1$=PC$:N=1:GOSUB 4440:C=2:GOSUB 4550
  141. 1410 IF B$="" OR B$<>P3$ THEN 1390
  142. 1420 IF XPR THEN 1450
  143. 1430 GOSUB 4440:FIL$="ENTERCPM":NW=1:GOSUB 4920:GOSUB 4440
  144. 1440 '
  145. 1450 IF IHM<>HM THEN MFJ$=MF$:GOSUB 5710
  146. 1460 GOSUB 3680
  147. 1470 POKE 4,0
  148. 1480 A$="Entering CP/M...":GOSUB 4440
  149. 1490 POKE 0,&HC3:SYSTEM
  150. 1500 '
  151. 1510 FIL$="BULLETIN":GOSUB 4920:RETURN
  152. 1520 '
  153. 1530 FIL$="MENURBBS":GOSUB 4920:GOSUB 4440:RETURN
  154. 1540 '
  155. 1550 IF N$=SYS3$ OR MF$="!" OR MF$="&" OR MF$="#" THEN GOTO 1580
  156. 1560 GOSUB 4440:GOSUB 4440
  157. 1570 A$=ANS1$:GOSUB 4440:GOSUB 4440:SAV$="":RETURN
  158. 1580 F=0:GOSUB 4440:V=0
  159. 1590 OPEN "R",1,DSK2$+"COUNTERS."+SELC$,5
  160. 1600 FIELD#1,5 AS RR$:GET#1,MNUM:V=VAL(RR$)
  161. 1610 A$="Msg # will be ":N=1:GOSUB 4440
  162. 1620 A$=STR$(V+1):GOSUB 4440:CLOSE
  163. 1630 GOSUB 4440
  164. 1640 A1$="Today's Date/Time (MM/DD|HH:MM) ":N=1:GOSUB 4440:GOSUB 4550
  165. 1650 IF B$="" THEN 1640 ELSE D$=B$
  166. 1660 IF LEN(D$) >11 THEN PRINT"Please use correct format ":GOTO 1640
  167. 1670 A1$="To (RETURN for ALL): ":N=1:GOSUB 4440
  168. 1680 C=1:GOSUB 4550:IF B$="" THEN T$="ALL" ELSE T$=B$
  169. 1690 GOSUB 5920:IF NOT OK THEN 1670
  170. 1700 GOSUB 6010
  171. 1710 A1$="Subject: ":N=1:GOSUB 4440
  172. 1720 C=0:GOSUB 4550:IF B$="" THEN 1710 ELSE K$=B$:
  173. 1730 IF LEN(K$)>26 THEN PRINT "Too long... 25 character limit":GOTO 1710
  174. 1740 A1$="Password ('*' for Private): ":N=1:GOSUB 4440
  175. 1750 C=1:GOSUB 4550:PW$=B$
  176. 1760 IF T$<>"ALL" OR LEFT$(PW$,1)<>"*" THEN 1780
  177. 1770 A$="Cannot use '*' with ALL.":GOSUB 4440:GOTO 1740
  178. 1780 IF XPR THEN 1830
  179. 1790 GOSUB 4440
  180. 1800 SIZE$=STR$(SIZE)
  181. 1810 A$="Enter up to"+SIZE$+" lines of text (NO semicolons).":GOSUB 4440
  182. 1820 A$="When finished, hit two <CR>'s in a row.":GOSUB 4440
  183. 1830 GOSUB 4440:F=0
  184. 1840 IF F=SIZE THEN A$="Message full.":GOSUB 4440:GOTO 1910
  185. 1850 F=F+1
  186. 1860 A1$=SPACE$(3-LEN(STR$(F)))+STR$(F)+"> ":N=1:GOSUB 4440
  187. 1870 GOSUB 4550:IF B$="" THEN F=F-1:IF F=0 THEN 2070 ELSE 1910
  188. 1880 IF F=SIZE-2 THEN PRINT "(2 lines left)"
  189. 1890 IF F=SIZE-1 THEN PRINT "(Last line)"
  190. 1900 A$(F)=B$+" ":GOTO 1840
  191. 1910 GOSUB 4440
  192. 1920 A1$="Select: (H)eader, (L)ist, (E)dit, (A)bort, (C)ontinue, (S)ave: "
  193. 1930 IF XPR THEN A1$="H,L,E,A,C,S: "
  194. 1940 N=1:GOSUB 4440:C=1:GOSUB 4550
  195. 1950 IF B$="" THEN 1920
  196. 1960 FF=INSTR("HLEACS",B$):IF FF=0 THEN 1920
  197. 1970 ON FF GOTO 2080,1980,2210,2070,1840,2310
  198. 1980 GOSUB 4420:GOSUB 4440
  199. 1990 A$="Time/Date: "+D$:GOSUB 4440
  200. 2000 A$="To:   "+TX$:GOSUB 4440
  201. 2010 A$="Re:   "+K$:GOSUB 4440
  202. 2020 A$="PW:   "+PW$:GOSUB 4440
  203. 2030 GOSUB 4460
  204. 2040 FOR L=1 TO F:A$=SPACE$(3-LEN(STR$(L)))+STR$(L)+": "+A$(L)
  205. 2050 IF BK THEN 1910 ELSE GOSUB 4440:NEXT L
  206. 2060 GOSUB 4440:GOTO 1910
  207. 2070 GOSUB 4440:A$="Aborted":GOSUB 4440:GOSUB 4440:RETURN
  208. 2080 GOSUB 4440:A$="Enter replacement or RETURN for no change.":GOSUB 4440
  209. 2090 A1$="Date: "+D$+": ":N=1:GOSUB 4440:GOSUB 4550
  210. 2100 IF B$<>"" THEN D$=B$
  211. 2110 A1$="To:   "+TX$+": ":N=1:GOSUB 4440:C=1:GOSUB 4550
  212. 2120 IF B$="" THEN 2150
  213. 2130 TSV$=T$:T$=B$:GOSUB 5920:IF NOT OK THEN T$=TSV$:GOTO 2110
  214. 2140 GOSUB 6010
  215. 2150 A1$="Re:   "+K$+": ":N=1:GOSUB 4440:C=0:GOSUB 4550
  216. 2160 IF B$<>"" THEN K$=B$
  217. 2170 A1$="PW:   "+PW$+": ":N=1:GOSUB 4440:C=1:GOSUB 4550
  218. 2180 IF B$="" THEN 1910
  219. 2190 IF T$<>"ALL" OR LEFT$(B$,1)<>"*" THEN PW$=B$:GOTO 1910
  220. 2200 A$="Cannot use '*' with ALL.":GOSUB 4440:GOTO 2170
  221. 2210 IF XPR THEN 2250
  222. 2220 GOSUB 4440
  223. 2230 A$="Enter Line # to change (<CR> or 0 to end).":GOSUB 4440
  224. 2240 A$="Then enter replacement or <CR> for no change.":GOSUB 4440
  225. 2250 GOSUB 4440:A1$="Line Number: ":N=1:GOSUB 4440:C=3:GOSUB 4550
  226. 2260 L=VAL(B$):IF L=0 OR L>F THEN GOSUB 4440:GOTO 1910
  227. 2270 A$=" was:":GOSUB 4440
  228. 2280 A$=SPACE$(3-LEN(STR$(L)))+STR$(L)+": "+A$(L):GOSUB 4440
  229. 2290 A1$=SPACE$(3-LEN(STR$(L)))+STR$(L)+": ":N=1:GOSUB 4440:GOSUB 4550
  230. 2300 IF B$="" THEN 2250 ELSE A$(L)=B$+" ":GOTO 2250
  231. 2310 '
  232. 2320 IF PW$<>"" THEN PW$=";"+PW$
  233. 2330 A$="Updating Summary file, ":N=1:GOSUB 4440
  234. 2340 OPEN "R",1,DSK2$+"SUMMARY."+SELC$,30
  235. 2350 RE=1:FIELD#1,30 AS RR$:RL=30
  236. 2360 RE=MZ*6+1:S$=STR$(V+1)+PW$:GOSUB 4770:PUT#1,RE
  237. 2370 RE=RE+1:S$=D$:GOSUB 4770:PUT#1,RE
  238. 2380 RE=RE+1:S$=N$+" "+O$:GOSUB 4770:PUT#1,RE
  239. 2390 RE=RE+1:S$=T$:GOSUB 4770:PUT#1,RE
  240. 2400 RE=RE+1:S$=K$:GOSUB 4770:PUT#1,RE
  241. 2410 RE=RE+1:S$=STR$(F):GOSUB 4770:PUT#1,RE
  242. 2420 RE=RE+1:S$=" 9999":GOSUB 4770:PUT#1,RE
  243. 2430 CLOSE#1
  244. 2440 A$="Next Message #, ":N=1:GOSUB 4440:VV=0
  245. 2450 OPEN "R",1,DSK2$+"COUNTERS."+SELC$,5:FIELD#1,5 AS RR$:GET#1,MNUM
  246. 2460 LSET RR$=STR$(V+1):PUT#1,MNUM
  247. 2470 A$="Active Messages, ":N=1:GOSUB 4440
  248. 2480 GET#1,MSGS:VV=VAL(RR$)
  249. 2490 LSET RR$=STR$(VV+1):PUT#1,MSGS:CLOSE#1
  250. 2500 A$="and Message file.":N=1:GOSUB 4440
  251. 2510 OPEN "R",1,DSK2$+"MESSAGES."+SELC$,65
  252. 2520 RL=65:FIELD#1,65 AS RR$:RE=MX+1
  253. 2530 S$=STR$(V+1)+PW$:GOSUB 4770:PUT#1,RE
  254. 2540 RE=RE+1:S$=D$:GOSUB 4770:PUT#1,RE
  255. 2550 RE=RE+1:S$=N$+" "+O$:GOSUB 4770:PUT#1,RE
  256. 2560 RE=RE+1:S$=T$:GOSUB 4770:PUT#1,RE
  257. 2570 RE=RE+1:S$=K$:GOSUB 4770:PUT#1,RE
  258. 2580 RE=RE+1:S$=STR$(F):GOSUB 4770:PUT#1,RE
  259. 2590 RE=RE+1
  260. 2600 FOR P=1 TO F:S$=A$(P):GOSUB 4770:PUT#1,RE:RE=RE+1:NEXT P:S$=" 9999":GOSUB 4770:PUT#1,RE:CLOSE#1:MX=MX+F+6:MZ=MZ+1:M(MZ,1)=V+1:M(MZ,2)=F
  261. 2610 GOSUB 4440:GOSUB 4440:U=U+1:RETURN
  262. 2620 '
  263. 2630 FT=-1:G=0
  264. 2640 GOSUB 4440
  265. 2650 A2$="Retrieve":GOSUB 3030
  266. 2660 IF LEN(B$)=0 THEN M=0 ELSE M=VAL(B$)
  267. 2670 IF M<1 THEN GOSUB 4440:RETURN
  268. 2680 IF M>U THEN GOSUB 5790:GOTO 2640
  269. 2690 OPEN "R",1,DSK2$+"MESSAGES."+SELC$,65
  270. 2700 RE=1:FIELD#1,65 AS RR$:MI=0
  271. 2710 MI=MI+1:IF (MI>MZ) OR BK THEN 3010 ELSE G=M(MI,1)
  272. 2720 IF MI=M AND G=0 THEN PRINT MI;" is deleted."
  273. 2730 IF G<M THEN RE=RE+M(MI,2)+6:GOTO 2710
  274. 2740 IF G>M THEN 2960
  275. 2750 GOSUB 5000:IF OK OR NOT PERS THEN 2760 ELSE PRINT MI;" is personal.":RE=RE+M(MI,2):GOTO 2710
  276. 2760 RE=RE+1:GET#1,RE:GOSUB 4800:D$=S$
  277. 2770 RE=RE+1:GET#1,RE:GOSUB 4800:NO$=S$
  278. 2780 RE=RE+1:GET#1,RE:GOSUB 4800:T$=S$
  279. 2790 RE=RE+1:GET#1,RE:GOSUB 4800:GOSUB 5080:K$=S$
  280. 2800 RE=RE+1:GET#1,RE:J=VAL(RR$):GOSUB 4440
  281. 2810 IF FT THEN GOSUB 4420:GOSUB 4440:FT=0
  282. 2820 A$="Msg #:"+STR$(G):GOSUB 4440
  283. 2830 A$="Time/Date: "+D$:GOSUB 4440
  284. 2840 T01$=NO$:T02$="":TX$=NO$
  285. 2850 I=INSTR(NO$," "):IF I>0 THEN T01$=LEFT$(NO$,I-1):T02$=MID$(NO$,I+1)
  286. 2860 IF T01$<>SYS3$ THEN GOSUB 6030
  287. 2870 A$="From: "+TX$:GOSUB 4440
  288. 2880 T01$=T$:T02$="":TX$=T$
  289. 2890 I=INSTR(T$," "):IF I>0 THEN T01$=LEFT$(T$,I-1):T02$=MID$(T$,I+1)
  290. 2900 GOSUB 6010
  291. 2910 A$="To:   "+TX$:GOSUB 4440
  292. 2920 A$="Re:   "+K$:GOSUB 4440:GOSUB 4440
  293. 2930 RE=RE+1:FOR P=1 TO J:GET#1,RE:GOSUB 4800:A$=S$:GOSUB 4440
  294. 2940 IF BK THEN BK=0:GOTO 2960
  295. 2950 RE=RE+1:NEXT P:GOSUB 4440
  296. 2960 IF RIGHT$(B$,1)="+" THEN 2990
  297. 2970 IF G>HM THEN HM=G
  298. 2980 CLOSE:GOTO 2640
  299. 2990 M=M+1:MI=0:RE=1
  300. 3000 IF M<=U AND NOT BK THEN 2710
  301. 3010 IF G>HM THEN HM=G
  302. 3020 CLOSE:A$="End of Messages.":GOSUB 4440:GOSUB 4440:D$="":NO$="":RETURN
  303. 3030 PRINT
  304. 3040 A1$="Message Number: ("+STR$(IU)+"-"+STR$(U)+")"
  305. 3050 IF NOT XPR THEN A1$=A1$+" to "+A2$+" (RETURN to quit)"
  306. 3060 A1$=A1$+" : ":N=1:GOSUB 4440:GOSUB 4550:GOSUB 4440:RETURN
  307. 3070 GOSUB 4440
  308. 3080 A2$="Start":GOSUB 3030
  309. 3090 IF LEN(B$)=0 THEN M=0:GOSUB 4440:RETURN ELSE M=VAL(B$):GOSUB 4530
  310. 3100 IP=INSTR(B$,","):IF IP>0 THEN B$=MID$(B$,IP+1) ELSE ST=0:GOTO 3150
  311. 3110 IF LEN(B$)<3 THEN RETURN
  312. 3120 IF MID$(B$,2,1)<>"=" THEN RETURN
  313. 3130 SV$=MID$(B$,3):B$=LEFT$(B$,1):ST=INSTR("FTS",B$)
  314. 3140 IF ST=0 THEN RETURN
  315. 3150 IF M<1 THEN RETURN
  316. 3160 IF M>U THEN GOSUB 5790:RETURN
  317. 3170 GOSUB 4420:GOSUB 4440
  318. 3180 OPEN "R",1,DSK2$+"SUMMARY."+SELC$,30:RE=1:FIELD #1,28 AS RR$
  319. 3190 GET #1,RE
  320. 3200 GOTO 3270
  321. 3210 IF PERS THEN PRINT" ";G;" is personal/deleted."
  322. 3220 GOTO 3250
  323. 3230 IF (RE+5)/6 <M THEN 3250
  324. 3240 PRINT" ";(RE+5)/6;" is deleted."
  325. 3250 RE=RE+6
  326. 3260 GOTO 3190
  327. 3270 IF EOF(1) OR BK THEN 3380 ELSE G=VAL(RR$)
  328. 3280 IF G>9998 THEN 3380
  329. 3290 IF G=0 THEN 3230
  330. 3300 IF G<M THEN 3250
  331. 3310 GOSUB 4990:IF OK OR NOT PERS THEN 3320 ELSE GOTO 3210
  332. 3320 GET #1,RE+ST+1
  333. 3330 IF ST=0 THEN 3350
  334. 3340 GOSUB 4800:CY$=S$:GOSUB 5860:IF INSTR(CY$,SV$)=0 THEN GOTO 3230
  335. 3350 GOSUB 3410
  336. 3360 IF BK THEN 3380
  337. 3370 IF U=G OR BK THEN 3380 ELSE RE=RE+2:GOTO 3190
  338. 3380 GOSUB 4440
  339. 3390 A$="*** End of Scan ***":GOSUB 4440:GOSUB 4440:GOSUB 4440
  340. 3400 CLOSE:RETURN
  341. 3410 '
  342. 3420 A$=SPACE$(4-LEN(STR$(G)))+STR$(G)+": "
  343. 3430 GET #1,RE+5:GOSUB 4800
  344. 3440 A$=A$+SPACE$(3-LEN(STR$(VAL(S$))))+STR$(VAL(S$))+"  "
  345. 3450 RE=RE+1:GET #1,RE:GOSUB 4800
  346. 3460 A$=A$+S$+"  "
  347. 3470 RE=RE+1:GET #1,RE:GOSUB 4800
  348. 3480 I=INSTR(S$," "):IF I>0 THEN S$=MID$(S$,I+1)
  349. 3490 IF LEN(S$) > 8 THEN S$=LEFT$(S$,8)
  350. 3500 IF S$<>SYS3$ THEN CX$=S$:GOSUB 5800:S$=CX$
  351. 3510 A$=A$+S$+SPACE$(8-LEN(S$))+" to => "
  352. 3520 RE=RE+1:GET #1,RE:GOSUB 4800
  353. 3530 I=INSTR(S$," "):IF I>0 THEN S$=MID$(S$,I+1)
  354. 3540 IF S$<>SYS3$ AND S$<>"ALL" THEN CX$=S$:GOSUB 5800:S$=CX$
  355. 3550 IF LEN(S$) > 8 THEN S$=LEFT$(S$,8)
  356. 3560 A$=A$+S$+SPACE$(8-LEN(S$))+" "
  357. 3570 RE=RE+1:GET #1,RE:GOSUB 4800
  358. 3580 GOSUB 5080
  359. 3590 A$=A$+S$:GOSUB 4440
  360. 3600 RETURN
  361. 3610 '
  362. 3620 BK=0:GOSUB 3680:IF BK THEN 1140
  363. 3630 IF MF$="*" THEN A$=N$+", Don't call back Again ! ":GOSUB 4440:GOTO 3660
  364. 3640 A$=CN$+", thanks for calling...":GOSUB 4440
  365. 3650 A$="Please call again!  Bye...":GOSUB 4440
  366. 3660 GOSUB 4440:GOSUB 4440:IF IHM<>HM THEN MFJ$=MF$:GOSUB 5710
  367. 3670 GOTO 3870
  368. 3680 '
  369. 3690 IF N$=SYS3$ THEN RETURN
  370. 3700 GOSUB 4440
  371. 3710 A1$="Enter confidential comments for the SYSOP <Y or N> ":GOSUB 5740
  372. 3720 IF NOT OK THEN 3820
  373. 3730 RE=2:RL=65:OPEN "R",1,DSK2$+"COMMENTS",65:FIELD#1,65 AS RR$
  374. 3740 GET#1,1:RE=VAL(RR$)+1:IF RE=1 THEN RE=2
  375. 3750 S$=" ":GOSUB 4770:PUT#1,RE:RE=RE+1
  376. 3760 S$="From: "+CN$+" "+CO$:GOSUB 4770:PUT#1,RE
  377. 3770 A$="Enter Date, then text; type two RETURNs to end.":GOSUB 4440
  378. 3780 GOSUB 4440
  379. 3790 A1$="> ":N=1:GOSUB 4440:GOSUB 4550
  380. 3800 IF B$<>"" THEN RE=RE+1:S$=B$:RL=65:GOSUB 4770:PUT#1,RE:GOTO 3790
  381. 3810 S$=STR$(RE):RL=65:GOSUB 4770:PUT#1,1:CLOSE
  382. 3820 GOSUB 4440
  383. 3830 A$="Character count: "+STR$(A)+" typed by system - "+STR$(D)+" typed by you.":GOSUB 4440
  384. 3840 GOSUB 4440:RETURN
  385. 3850 A1$="Sorry, too many errors.  Another time.  Bye..."
  386. 3860 GOSUB 4440:GOSUB 4440
  387. 3870 '
  388. 3880 OUT &HFF,29
  389. 3890 POKE 0,&HC3
  390. 3900 POKE &H5B,0
  391. 3910 RUN "BYE"
  392. 3920 '
  393. 3930 IF N$=SYS3$ OR MF$="!" OR MF$="&" OR MF$="#" THEN GOTO 3970
  394. 3940 GOSUB 4440:GOSUB 4440
  395. 3950 A$=ANS1$:GOSUB 4440:GOSUB 4440:SAV$="":RETURN
  396. 3960 '
  397. 3970 GOSUB 4440
  398. 3980 A2$="Kill":GOSUB 3030
  399. 3990 IF LEN(B$)=0 THEN M=0 ELSE M=VAL(B$)
  400. 4000 IF M<1 THEN GOSUB 4440:RETURN
  401. 4010 IF M>U THEN GOSUB 5790:GOTO 3960
  402. 4020 A$="Scanning Summary file...":N=1:GOSUB 4440
  403. 4030 OPEN "R",1,DSK2$+"SUMMARY."+SELC$,30:RE=1:FIELD#1,30 AS RR$:RL=30
  404. 4040 GET#1,RE
  405. 4050 IF EOF(1) THEN 4250 ELSE G=VAL(RR$)
  406. 4060 IF G>9998 THEN 4250
  407. 4070 IF G<M THEN RE=RE+6:GOTO 4040
  408. 4080 IF G>M THEN 4250
  409. 4090 GOSUB 4990:IF OK OR NOT PERS THEN 4100 ELSE 4250
  410. 4100 GET#1,RE:GOSUB 4800:PW=INSTR(S$,";"):PW$=""
  411. 4110 IF N$=SYS3$ OR PERS OR OK THEN PERS = 0:GOTO 4150
  412. 4120 IF PW=0 THEN PRINT"INVALID KILL ":CLOSE #1:RETURN
  413. 4130 PW$=MID$(S$,PW+1):GOSUB 4440:A1$="Password: ":N=1:GOSUB 4440
  414. 4140 C=1:GOSUB 4550:IF B$<>PW$ THEN A$="Incorrect.":GOTO 4260
  415. 4150 S$=" 0"+":"+STR$(G):GOSUB 4770:PUT#1,RE:CLOSE
  416. 4160 A$="Updating Message file...":N=1:GOSUB 4440
  417. 4170 OPEN "R",1,DSK2$+"MESSAGES."+SELC$,65:RE=1:FIELD#1,65 AS RR$:MI=0
  418. 4180 MI=MI+1:IF MI>MZ THEN 4250 ELSE G=M(MI,1)
  419. 4190 IF G<M THEN RE=RE+M(MI,2)+6:GOTO 4180
  420. 4200 IF G=M THEN S$="0"+":"+STR$(G)+":"+N$+","+O$:RL=65:GOSUB 4770:PUT#1,RE:M(MI,1)=0
  421. 4210 CLOSE#1:A$="Updating Message count...":GOSUB 4440
  422. 4220 OPEN "R",1,DSK2$+"COUNTERS."+SELC$,5:FIELD#1,5 AS RR$
  423. 4230 GET#1,MSGS:LSET RR$=STR$(VAL(RR$)-1):PUT#1,MSGS
  424. 4240 GOSUB 4440:A$="Message killed.":GOTO 4260
  425. 4250 A$="Message not found."
  426. 4260 CLOSE:GOSUB 4440:GOTO 3970
  427. 4270 '
  428. 4280 GOSUB 4420
  429. 4290 OPEN "R",1,DSK$+"USERS",62:FIELD#1,1 AS MU$,1 AS SU$,60 AS RR$
  430. 4300 FIELD#1,10 AS NN$:GET#1,1:NU=VAL(NN$)
  431. 4310 GOSUB 4440
  432. 4320 FOR J=NU+1 TO 2 STEP -1
  433. 4330 GET#1,J:IF SU$="*" THEN 4390
  434. 4340 GOSUB 4800:S0$=S$
  435. 4350 I=INSTR(S0$,";"): S1$=LEFT$(S0$,I-1):S2$=MID$(S0$,I+1)
  436. 4360 I=INSTR(S2$,";"): S3$=MID$(S2$,I+1):S2$=LEFT$(S2$,I-1)
  437. 4370 I=INSTR(S3$,";"): S3$=LEFT$(S3$,I-1)
  438. 4380 A$=S1$+" "+S2$+", "+S3$:GOSUB 4440
  439. 4390 IF BK THEN 4410
  440. 4400 NEXT J
  441. 4410 CLOSE:GOSUB 4440:RETURN
  442. 4420 GOSUB 4440
  443. 4430 A$="Use CTL-S to PAUSE, CTL-K to ABORT."
  444. 4440 '
  445. 4450 IF SAV$<>"" AND A1$<>"" THEN A1$="":RETURN
  446. 4460 IF A1$<>"" THEN A$=A1$:A1$=""
  447. 4470 IF N=1 THEN PRINT A$;:PP$=A$:GOTO 4520
  448. 4480 BI=ASC(INKEY$+" ")
  449. 4490 IF BI=&H13 OR BI=&H53 OR BI=&H73 THEN BI=ASC(INPUT$(1)):GOTO 4510
  450. 4500 IF BI=&HB OR BI=&H4B OR BI=&H6B THEN BK=-1:GOTO 4530 
  451. 4510 PRINT A$
  452. 4520 A=A+LEN(A$)
  453. 4530 A$="":N=0
  454. 4540 RETURN
  455. 4550 '
  456. 4560 IF BEL AND SAV$="" THEN PRINT CHR$(7);
  457. 4570 B$="":BK=0
  458. 4580 IF SAV$="" THEN GOSUB 5100:IF C<>3 THEN PRINT
  459. 4590 SP=INSTR(SAV$,";"):IF SP=0 THEN B$=SAV$:SAV$="":GOTO 4610
  460. 4600 B$=LEFT$(SAV$,SP-1):SAV$=MID$(SAV$,SP+1)
  461. 4610 IF LEN(B$)=0 THEN C=0:RETURN
  462. 4620 IF C=0 THEN 4640
  463. 4630 CY$=B$:GOSUB 5860:B$=CY$
  464. 4640 D=D+LEN(B$):C=0
  465. 4650 RETURN
  466. 4660 '
  467. 4670 IF ERL=190 THEN RESUME 220
  468. 4680 IF ERL=710 THEN RE=0:RESUME 720
  469. 4690 IF ERL=800 THEN RESUME 840
  470. 4700 IF ERL=930 THEN RESUME 1090
  471. 4710 IF ERL=1590 THEN RESUME 1610
  472. 4720 IF ERL=3180 THEN RESUME 3380
  473. 4730 IF ERL=3730 THEN RESUME 3760
  474. 4740 IF ERL=4930 THEN RESUME 4980
  475. 4750 IF ERL=5540 THEN RESUME 5670
  476. 4760 RESUME NEXT
  477. 4770 '
  478. 4780 LSET RR$=LEFT$(S$+SPACE$(RL-2),RL-2)+CHR$(13)+CHR$(10)
  479. 4790 RETURN
  480. 4800 '
  481. 4810 ZZ=LEN(RR$)-2
  482. 4820 WHILE MID$(RR$,ZZ,1)=" "
  483. 4830 ZZ=ZZ-1:IF ZZ=1 THEN 4850
  484. 4840 WEND
  485. 4850 S$=LEFT$(RR$,ZZ)
  486. 4860 IF MID$(S$,ZZ,1)="?" THEN S$=S$+" "
  487. 4870 RETURN
  488. 4880 '
  489. 4890 XPR=NOT XPR:RETURN
  490. 4900 '
  491. 4910 BEL=NOT BEL:RETURN
  492. 4920 '
  493. 4930 OPEN "I",1,DSK$+FIL$:BK=0:IF EOF(1) THEN 4980
  494. 4940 IF NW=0 THEN GOSUB 4420 ELSE NW=0
  495. 4950 GOSUB 4440
  496. 4960 IF EOF(1) OR BK THEN 4980 ELSE LINE INPUT #1,A$:GOSUB 4440:GOTO 4960
  497. 4970 GOSUB 4440
  498. 4980 CLOSE # 1:RETURN
  499. 4990 '
  500. 5000 PERS=0:OK=-1:GET #1,RE:IF INSTR(RR$,";*")<>0 THEN PERS=-1
  501. 5010 IF N$=SYS3$ THEN 5040
  502. 5020 GET #1,RE+3:GOSUB 5050:IF OK THEN 5040
  503. 5030 GET #1,RE+2:GOSUB 5050
  504. 5040 RETURN
  505. 5050 GOSUB 4800:I=INSTR(S$," "):S1$=LEFT$(S$,I-1):S2$=MID$(S$,I+1)
  506. 5060 IF S1$=N$ AND S2$=O$ THEN OK=-1 ELSE OK=0
  507. 5070 RETURN
  508. 5080 IF PERS THEN S$="("+S$:S$=S$+")":PERS=0
  509. 5090 RETURN
  510. 5100 '
  511. 5110 CHC=0: SAV$="":DC=0:IC=&H30
  512. 5120 NCH=ASC(INPUT$(1))
  513. 5130 IF NCH=13 THEN RETURN
  514. 5140 IF NCH=127 THEN 5220
  515. 5150 IF NCH<32 THEN 5240
  516. 5160 IF CHC>=63 THEN PRINT CHR$(7);:GOTO 5120
  517. 5170 SAV$=SAV$+CHR$(NCH): CHC=CHC+1 :IC=IC+1:IF IC=&H3A THEN IC=&H30
  518. 5180 IF DC THEN PRINT CHR$(10);
  519. 5190 IF C<>2 THEN PRINT CHR$(NCH); ELSE PRINT CHR$(IC);
  520. 5200 IF CHC=55 THEN PRINT CHR$(7);
  521. 5210 DC=0:GOTO 5120
  522. 5220 IF CHC=0 THEN 5120 ELSE PRINT BSL$;:DC=-1
  523. 5230 CHC=CHC-1:IC=IC-1: SAV$=LEFT$(SAV$,CHC): GOTO 5120
  524. 5240 IF CHC=0 THEN 5120
  525. 5250 IF NCH=8 THEN PRINT ERS$;:DC=0:GOTO 5230
  526. 5260 IF NCH=12 THEN GOSUB 5320:GOTO 5330
  527. 5270 IF NCH=18 THEN PRINT:PRINT PP$;:GOTO 5330
  528. 5280 IF NCH=21 THEN PRINT " #": PRINT PP$;:DC=0:GOTO 5110
  529. 5290 IF NCH<>24 THEN 5120
  530. 5300 GOSUB 5320
  531. 5310 GOTO 5110
  532. 5320 FOR BCC=1 TO CHC: PRINT ERS$;: NEXT BCC: RETURN
  533. 5330 IF C<>2 THEN PRINT SAV$;: GOTO 5350
  534. 5340 IC=&H30:FOR BCC=1 TO CHC: IC=IC+1: PRINT CHR$(IC);: NEXT BCC
  535. 5350 DC=0:GOTO 5120
  536. 5360 '
  537. 5370 GOSUB 4440
  538. 5380 A$="Enter at least six alphanumeric characters":GOSUB 4440
  539. 5390 A1$="for your PASSWORD:  "
  540. 5400 N=1:GOSUB 4440:C=2:GOSUB 4550:S04$=B$:IF S04$="" THEN 5370
  541. 5410 IF LEN(S04$)<6 THEN 5370
  542. 5420 A1$="Now enter it again: "
  543. 5430 N=1:GOSUB 4440:C=2:GOSUB 4550
  544. 5440 IF S04$<>B$ THEN A1$="No match.  Try again.":GOSUB 4440:GOTO 5370
  545. 5450 A$="OK, now please remember it.":GOSUB 4440:GOSUB 4440:RETURN
  546. 5460 '
  547. 5470 IF N$<>SYS3$ THEN 5680
  548. 5480 A1$="User's FIRST Name: ":N=1:GOSUB 4440
  549. 5490 C=1:GOSUB 4550:T01$=B$:IF T01$="" THEN RETURN
  550. 5500 A1$="User's LAST Name:  ":N=1:GOSUB 4440
  551. 5510 C=1:GOSUB 4550:T02$=B$:IF T02$="" THEN RETURN
  552. 5520 OK=0:GOSUB 5540:IF OK THEN GOSUB 6230:GOTO 5480
  553. 5530 A$="Not found.":GOSUB 4440:GOTO 5480
  554. 5540 '
  555. 5550 OPEN "R",1,DSK$+"USERS",62:FIELD#1,62 AS RR$:GET#1,1:NU=VAL(RR$)
  556. 5560 FOR J=2 TO NU+1:GET#1,J:GOSUB 4800:S00$=MID$(S$,3)
  557. 5570 IF B$="S" THEN MFJ$="#"
  558. 5580 I=INSTR(S00$,";"): S01$=LEFT$(S00$,I-1):S02$=MID$(S00$,I+1)
  559. 5590 I=INSTR(S02$,";"): S03$=MID$(S02$,I+1):S02$=LEFT$(S02$,I-1)
  560. 5600 I=INSTR(S03$,";"): S04$=MID$(S03$,I+1):S03$=LEFT$(S03$,I-1)
  561. 5610 I=INSTR(S04$,";"): IF I=0 THEN S05$="0":GOTO 5630
  562. 5620 S05$=MID$(S04$,I+1):S04$=LEFT$(S04$,I-1)
  563. 5630 HM=VAL(S05$)
  564. 5640 IF T01$<>S01$ OR T02$<>S02$ THEN 5660
  565. 5650 MFJ$=LEFT$(S$,1):GOSUB 4440:UJ=J:OK=-1:CLOSE:RETURN
  566. 5660 NEXT J
  567. 5670 CLOSE:RETURN
  568. 5680 '
  569. 5690 MFJ$=MF$
  570. 5700 GOSUB 5360
  571. 5710 OPEN "R",1,DSK$+"USERS",62:FIELD#1,62 AS RR$
  572. 5720 S$=MFJ$+" "+S01$+";"+S02$+";"+S03$+";"+S04$+";"+STR$(HM)
  573. 5730 RL=62:GOSUB 4770:PUT#1,UJ:CLOSE:RETURN
  574. 5740 PRINT"Answer Y or N ."
  575. 5750 A2$=A1$:OK=0
  576. 5760 A1$=A2$:N=1:GOSUB 4440:C=1:GOSUB 4550:ANS$=LEFT$(B$,1)
  577. 5770 IF ANS$="" THEN 5760 ELSE IF ANS$="Y" THEN OK=-1:RETURN
  578. 5780 IF ANS$<>"N" THEN 5740 ELSE RETURN
  579. 5790 A$="Invalid message number, "+CN$+".":GOSUB 4440:SAV$="":RETURN
  580. 5800 '
  581. 5810 FOR ZZ=2 TO LEN(CX$)
  582. 5820 ZA=ASC(MID$(CX$,ZZ,1)):IF ZA<&H41 OR ZA>&H5A THEN 5840
  583. 5830 MID$(CX$,ZZ,1)=CHR$(ZA+&H20)
  584. 5840 NEXT ZZ
  585. 5850 RETURN
  586. 5860 '
  587. 5870 FOR ZZ=1 TO LEN(CY$)
  588. 5880 ZA=ASC(MID$(CY$,ZZ,1)):IF ZA<&H61 OR ZA>&H7A THEN 5900
  589. 5890 MID$(CY$,ZZ,1)=CHR$(ZA-&H20)
  590. 5900 NEXT ZZ
  591. 5910 RETURN
  592. 5920 '
  593. 5930 T01$=T$:T02$=""
  594. 5940 IF T$=SYS3$ OR T$="ALL" THEN OK=-1:RETURN
  595. 5950 U01$=S01$:U02$=S02$:U03$=S03$:U04$=S04$:SHM=HM:SUJ=UJ:SMF$=MF$
  596. 5960 I=INSTR(T$," "): IF I=0 THEN OK=0:GOTO 5990
  597. 5970 T01$=LEFT$(T$,I-1):T02$=MID$(T$,I+1):OK=0:GOSUB 5540
  598. 5980 S01$=U01$:S02$=U02$:S03$=U03$:S04$=U04$:HM=SHM:UJ=SUJ:MF$=SMF$
  599. 5990 IF NOT OK THEN A1$="Not a currently known User.  OK? ":GOSUB 5740
  600. 6000 RETURN
  601. 6010 '
  602. 6020 IF T$=SYS3$ OR T$="ALL" THEN TX$=T$:RETURN
  603. 6030 CX$=T01$:GOSUB 5800:T01$=CX$:CX$=T02$:GOSUB 5800:T02$=CX$
  604. 6040 TX$=T01$+" "+T02$
  605. 6050 RETURN
  606. 6060 CX$=N$:GOSUB 5800:CN$=CX$:CX$=O$:GOSUB 5800:CO$=CX$:RETURN
  607. 6070 A$=" ":GOSUB 4440:GOSUB 4440:GOSUB 4440
  608. 6080 A$="You are in the CHAT mode":GOSUB 4440
  609. 6090 A1$="Shall I page the SYSOP  <Y OR N>  ":GOSUB 5740
  610. 6100 IF NOT OK THEN RETURN
  611. 6110 FOR T1=1 TO 3
  612. 6120 PRINT CHR$(7);
  613. 6130 FOR T2=1 TO BEEP:NEXT T2
  614. 6140 NEXT T1
  615. 6150 GOSUB 4440:GOSUB 4440
  616. 6160 A$="Type Bye to Exit the CHAT mode":GOSUB 4440
  617. 6170 A$="":GOSUB 4440
  618. 6180 BELS=BEL:BEL=0
  619. 6190 A1$="":N=1:GOSUB 4440:GOSUB 4550
  620. 6200 IF B$="BYE" OR B$="bye" OR B$="Bye" THEN BEL=BELS:RETURN
  621. 6210 GOTO 6190
  622. 6220 GOTO 1140
  623. 6230 '
  624. 6240 IF N$<>SYS3$ THEN GOTO 1140
  625. 6250 A1$="Change <P>assword or <V>alidation ->":N=1:GOSUB 4440
  626. 6260 C=1:GOSUB 4550:IF B$="P" THEN GOTO 5700
  627. 6270 GOSUB 4440
  628. 6280 A1$="<T>wit,<M>essage User,<C>PM/Message User, <S>PECIAL ->":N=1:GOSUB 4440
  629. 6290 C=1:GOSUB 4550:IF B$="T" THEN MFJ$="*"
  630. 6300 IF B$="M" THEN MFJ$="!"
  631. 6310 IF B$="C" THEN MFJ$="&"
  632. 6320 IF B$="S" THEN MFJ$="#"
  633. 6330 GOTO 5710
  634. 6340 '
  635. 6350 FIL$="NEWS":NW=0:GOSUB 4920:RETURN
  636. 6360 '
  637. 6370 FIL$="TWIT":NW=1:GOSUB 4920
  638. 6380 GOTO 3610
  639. 6390 IF N$=SYS3$ THEN 6410
  640. 6400 IF MF$<>"#" THEN GOTO 1300
  641. 6410 FIL$="BASES":GOSUB 4920 
  642. 6430 PRINT "SELECTION: ":GOSUB 4550
  643. 6460 IF LEN(B$)>1 THEN 6430
  644. 6461 IF ASC(B$)>53 THEN 6430
  645. 6462 IF ASC(B$)<48 THEN 6430
  646. 6490 SELC$=B$
  647. 6500 GOTO 800
  648. B 4550
  649. 6460 I