10  COM Y1,F1,A,M,C,U,T,U1,Q,E1
20  COM A$[80],B$[80],C$[80],D$[80],E$[80],F$[80],G$[80],H$[80],I$[80]
30  COM J$[80],K$[80],L$[80],S$[80],T$[80],V$[80]
40  COM A1$[80],C1$[80],D1$[35],E1$[12],F1$[80],H0$[80],S1$[80]
45  COM G1$[10],K1$[10],L1$[12],M1$[6],O1$[10]
46  COM P1$[4]
50  Y1=BRK(0)
55  F1=T=R9=Z1=0
60  E1=9
90  SYSTEM S1$,"TIM"
100  IF SYS(3)=1 THEN 1930
110  REM *** BBS1 ***
120  FILES *,*,*,*,*,*,*
130  PRINT "Crisis Timeshare BBS"
140  PRINT "Office (408) 727-1679"
150  ASSIGN "BBS04F.A100",4,R4, NR 
160  IF SYS(3)=1 THEN 1930
170  IF R4#0 THEN 150
180  GOSUB 3440
190  PRINT H0$
200  C1=X=0
210  C1$=""
220  I$=""
230  PRINT 
240  IF  ERROR  THEN 1930
250  REM * LOG ON *
260  ASSIGN *,3
270  IF S1$[1,4]#"A000" THEN 300
280  C1$="SYSOP"
290  K1$="1"
300  IF S1$[1,4]="A000" THEN 590
310  PRINT "Please log on";
320  I$=""
330  PRINT ":";
340  Y1=BRK(0)
350  LINPUT C1$
360  IF C1$[1,1]="?" THEN 1990
370  IF LEN(C1$)>20 THEN 3420
380  IF LEN(C1$)<6 THEN 3400
390  IF POS(C1$,",") THEN 410
400  GOTO 3390
410  D=POS(C1$,",")
420  K1$=C1$[D+1,LEN(C1$)]
430  C1$=C1$[1,D-1]
440  CONVERT C1$ TO C1,2422
450  IF C1=1 THEN 1930
460  CONVERT C1 TO I$
470  GOTO 580
480  C1$=UOS$(C1$)
490  V$=UOS$(K1$)
500  IF LEN(C1$)>20 OR LEN(C1$)<5 THEN 250
510  IF C1$[1,5]="SYSOP" THEN 1930
520  IF SYS(3)=1 THEN 1930
530  IF  ERROR  THEN 1930
540  PRINT "Hello ";C1$;", is the spelling correct ?";
550  LINPUT J$
560  J$=UOS$(J$)
570  IF J$[1,1]="N" THEN 250
580  IF SYS(3)=1 THEN 1930
590  REM * CK FILE STATUS *
600  ASSIGN "BBS05F.A100",5,R5,'25, NR 
610  READ #5,1;M1$
620  ASSIGN *,5
630  IF V$="NEW" THEN 960
640  IF Z1=1 THEN 740
650  IF S1$[1,4]#"A000" THEN 740
660  PRINT ":";
670  SYSTEM X,"ECH-OFF"
680  LINPUT B$
690  PRINT CHR$(13)
700  IF B$='17'18'20 THEN 740
710  Z1=1
720  SYSTEM X,"ECH-ON"
730  GOTO 310
740  IF  ERROR  THEN 1930
750  SYSTEM X,"ECH-ON"
760  IF SYS(3)=1 THEN 1930
770  READ #4,1
780  IF  END #4 THEN 920
790  IF SYS(3)=1 THEN 1930
800  REM * FN/LN/CTY-ST/CODE/USER/EX-NOV *
810  READ #4;A$,B$,T$,F1$,G1$,C$
820  IF B$[1,1]="!" THEN 780
830  X1=REC(4)
840  X2=ITM(4)
850  IF I$=F1$ THEN 880
860  IF C1$=A$ THEN 880
870  GOTO 780
880  IF T$=K1$ THEN 1580
890  GOTO 900
900  PRINT "Invalid code"'7
910  GOTO 310
920  REM * ADD NEW USER *
930  IF SYS(3)=1 THEN 1930
940  PRINT "Cant find a record of ";C1$
950  GOTO 1960
960  IF  ERROR  THEN 1930
970  PRINT "Enter city,state :";
980  R9=1
990  LINPUT F$
1000  F$=UOS$(F$)
1010  IF LEN(F$)>20 OR LEN(F$)<5 THEN 970
1020  IF  ERROR  THEN 1930
1030  PRINT "Enter a personal code or type '?' ";
1040  SYSTEM X,"ECH-OFF"
1050  LINPUT F1$
1060  PRINT CHR$(13)
1070  IF F1$="" THEN 2200
1080  IF SYS(3)=1 THEN 1930
1090  IF F1$[1,1]="?" THEN 2200
1100  IF LEN(F1$)#4 THEN 1200
1110  IF F1$[1]<CHR$(64) THEN 1220
1120  IF F1$[1]>CHR$(91) THEN 1220
1130  IF F1$[2]>CHR$(91) THEN 1220
1140  IF F1$[2]<CHR$(64) THEN 1220
1150  IF F1$[3]<CHR$(64) THEN 1220
1160  IF F1$[3]>CHR$(91) THEN 1220
1170  IF F1$[4]<CHR$(64) THEN 1220
1180  IF F1$[4]>CHR$(91) THEN 1220
1190  GOTO 1240
1200  PRINT "Must be exactly 4 characters long."'7
1210  GOTO 1020
1220  PRINT "Upper case A-Z only."
1230  GOTO 1020
1240  PRINT "Type the code again to make sure it is O.K. ";
1250  LINPUT B$
1260  IF SYS(3)=1 THEN 1930
1270  PRINT CHR$(13)
1280  IF B$=F1$ THEN 1320
1290  PRINT "Sorry it does not match ... try again"'7
1300  PRINT CHR$(13)
1310  GOTO 1020
1320  PRINT "O.K. don't forget the code."
1330  PRINT "Are you an expert with this system (Y/N or ?) ";
1340  SYSTEM X,"ECH-ON"
1350  LINPUT E$
1360  E$=UOS$(E$)
1370  IF E$[1,1]="?" THEN 2140
1380  IF E$="" THEN 2140
1390  IF E$[1,1]="N" THEN 1440
1400  IF E$[1,1]="Y" THEN 1410
1410  E$="X"
1420  F1=1
1430  GOTO 1460
1440  E$="N"
1450  F1=0
1460  PRINT "Wait..."
1470  IF  ERROR  THEN 1930
1480  IF SYS(3)=1 THEN 1930
1490  READ #4,1
1500  IF TYP(4)=3 THEN 1580
1510  READ #4;A$
1520  IF A$=C1$ THEN 2270
1530  READ #4;A$,A$,A$,A$,A$
1540  A$=""
1550  GOTO 1500
1560  REM * 5 ITEMS ALLOWED *
1570  IF  END #1 THEN 1790
1580  ASSIGN "BBS01F.A100",1,R1,M1$, NR 
1590  IF SYS(3)=1 THEN 1930
1600  IF R1=6 THEN 1900
1610  IF R1#0 THEN 1580
1620  READ #1,1;A,M,C,U
1630  IF R9=1 THEN 1670
1640  PRINT #1,1;A,M+1,C,U, END 
1650  IF T$=K1$ THEN 1790
1660  IF C1$=A$ THEN 1790
1670  A=T=U1=R9
1680  PRINT #1,1;A,M+1,C,U+1, END 
1690  CONVERT U+1 TO C$
1700  L$=""
1710  CONVERT TIM(3)*1000+TIM(2) TO L$[1,5]
1720  I$="0000 New user       *00000+                             "
1730  I$[33,35]=L$[1,3]
1740  E$=E$[1,3]
1750  E$[2,3]="ML"
1760  PRINT #4,R9+12;C1$,F$,F1$,C$,E$,I$, END 
1770  C$="0000"
1780  CONVERT U+1 TO F1$
1790  CONVERT C1$ TO C1,3829
1800  C1$=A$
1810  T=1
1820  IF G1$[1,1]#"X" THEN 1840
1830  F1=1
1840  GOSUB 2330
1850  IF G1$[2,2]="M" THEN 1880
1860  CHAIN C1,"BBS02P.A100",90
1870  IF C1#0 THEN 1900
1880  CHAIN C1,"BBS06P.A100",90
1890  IF C1#0 THEN 1900
1900  PRINT "Sorry the BBS is down... call back later."'7
1910  PRINT #1,1; END 
1920  GOTO 1950
1930  REM ** LOG OFF **
1940  PRINT "Error";SYS(0);"in line";SYS(1)
1950  PRINT "Code # 001"
1960  IF S1$[1,4]="A000" THEN 1980
1970  SYSTEM X,"BYE"
1980  STOP 
1990  ASSIGN "BBS02F.A100",3,R3, NR 
2000  IF R3#0 THEN 1990
2010  C$="++++++"
2020  READ #3,1
2030  IF  END #3 THEN 10
2040  IF SYS(3)=1 THEN 1930
2050  READ #3;B$
2060  IF B$=C$ THEN 2080
2070  GOTO 2030
2080  READ #3;D$
2090  IF SYS(3)=1 THEN 1930
2100  IF  END #3 THEN 10
2110  IF D$[1,1]="+" THEN 10
2120  PRINT D$
2130  GOTO 2080
2140  PRINT 
2150  PRINT "Typing a 'Y' for yes will shorten all command prompts every"
2160  PRINT " time you log in. Typing an 'N' or hitting <CR> will"
2170  PRINT " keep command prompts in their original configuration."
2180  PRINT 
2190  GOTO 1330
2200  PRINT 
2210  PRINT "Type a four letter code that will be your password and"
2220  PRINT " protection code. The code must be upper case characters"
2230  PRINT " A-Z only, and must be exactly four characters long."
2240  PRINT "           *** REMEMBER YOUR CODE !! ***"
2250  PRINT 
2260  GOTO 1020
2270  READ #4;A$
2280  IF A$[1,1]#"!" THEN 2310
2290  READ #4;A$,A$,A$,A$
2300  GOTO 1540
2310  PRINT C1$;" already exists."'7
2320  GOTO 310
2330  REM *** PORT LOCK SUB ***
2340  ENTER #P
2350  ASSIGN "BBSF32.A100",6,R6, NR 
2360  PRINT #6,P+1; END 
2370  PRINT #6,P+32; END 
2380  PRINT #6,P+64; END 
2390  ASSIGN *,6
2400  CONVERT P TO T$
2410  L1$="BBSFXX.A100"
2420  IF P<10 THEN 2450
2430  L1$[5,6]=T$
2440  GOTO 2470
2450  L1$="BBSF0X.A100"
2460  L1$[6,6]=T$
2470  ASSIGN L1$,5,R5, WR 
2480  IF R5#0 THEN 2400
2490  FOR I=1 TO 25
2500  PRINT #5,I; END 
2510  NEXT I
2520  PRINT #5,1;C1$, END 
2530  O1$="ONQ*"
2540  PRINT #5,2;O1$, END 
2550  GOTO 2570
2560  T$=B$
2570  REM ** UPDATE LOG FILE **
2580  READ #4,1
2590  IF  END #4 THEN 2830
2600  X1=REC(4)
2610  X2=ITM(4)
2620  READ #4;B$,C$
2630  IF C$[1,1]="!" THEN 2680
2640  READ #4;C$,C$,C$,C$
2650  D$=C$
2660  IF C1$=B$ THEN 2700
2670  GOTO 2590
2680  ADVANCE #4;4,A4
2690  GOTO 2590
2700  READ #4,X1
2710  ADVANCE #4;X2+5,A4
2720  B$=H0$
2730  READ #1,1;A,M,C,U
2740  CONVERT C TO A$
2750  C$=A$[1,5]
2760  B$[LEN(B$)+1]="*"
2770  C$[LEN(C$)+1]=B$
2780  B$=""
2790  CONVERT TIM(3)*1000+TIM(2) TO B$[1,5]
2800  B$[LEN(B$)+1]="+"
2810  C$[LEN(C$)+1]=B$
2820  UPDATE #4;C$
2830  REM ** GREETINGS **
2840  B=TIM(1)
2850  IF B<12 THEN 2880
2860  IF B<18 THEN 2900
2870  GOTO 2920
2880  PRINT "Good morning ";
2890  GOTO 2930
2900  PRINT "Good afternoon ";
2910  GOTO 2930
2920  PRINT "Good evening ";
2930  D=POS(C1$," ")
2940  C$=D$
2950  CONVERT C$[1,POS(C$," ")-1] TO P1
2960  P2=C
2970  P2=P2-P1
2980  CONVERT P2 TO A$
2990  IF F1#0 THEN 3230
3000  IF D<4 THEN 3120
3010  PRINT C1$[1,D]
3020  PRINT "You are user # ";F1$;", and caller # ";M+1
3030  PRINT "Last on ";C$[5,POS(C$,"*")-1]
3040  PRINT "Last message at that time was #";D$[1,POS(D$," ")-1]
3050  IF POS(C$,"*")<1 THEN 3220
3060  CONVERT A$ TO A1
3070  IF A1#1 THEN 3100
3080  PRINT A$;" - New message entered since last log on."
3090  GOTO 3220
3100  PRINT A$;" Messages added since last log on."
3110  GOTO 3220
3120  PRINT C1$
3130  PRINT "You are user # ";F1$;", and caller # ";M+1
3140  PRINT "Last on ";C$[5,POS(C$,"*")-1]
3150  PRINT "Last message at that time was #";D$[1,POS(D$," ")-1]
3160  IF POS(C$,"*")<1 THEN 3220
3170  CONVERT A$ TO A1
3180  IF A1#1 THEN 3210
3190  PRINT A$;" - Message entered since last log on."
3200  GOTO 3220
3210  PRINT A$;" Messages added since last log on."
3220  RETURN 
3230  REM ** EXPERT PREAMBLE
3240  IF D<4 THEN 3270
3250  PRINT C1$[1,D]
3260  GOTO 3280
3270  PRINT C1$
3280  CONVERT C TO G$
3290  PRINT "User - ";F1$;", caller - ";M+1
3300  PRINT G$[1,4];" - Last entered."
3310  PRINT D$[1,POS(D$," ")-1];" - Last read."
3320  CONVERT A$ TO A1
3330  IF A1#1 THEN 3360
3340  PRINT A$[1,4];" - New message added."
3350  GOTO 3370
3360  PRINT A$[1,4];" - New messages added."
3370  IF POS(C$,"*")<1 THEN 3220
3380  GOTO 3220
3390  REM ** ERROR MESSAGES **
3400  PRINT "Illegal format, type '?' for help"'7
3410  GOTO 310
3420  PRINT "Too many chr's"'7
3430  GOTO 310
3440  REM **** CALENDAR STARTS HERE ****
3450  IF  ERROR  THEN 1930
3460  DATA 0,31,60,91,121,152,182,213,244,274,305,335,366,999
3470  DATA 0,31,59,90,120,151,181,212,243,273,304,334,365,999
3480  S=TIM(0)
3490  H=TIM(1)
3500  D=TIM(2)
3510  Y=TIM(3)
3520  G$="0123456789000000000000000"
3530  H0$="  -  -     :   AM"
3540  Q=H
3550  IF (H*100+S)<1200 THEN 3590
3560  H0$[16,17]="PM"
3570  IF H<13 THEN 3590
3580  Q=H-12
3590  GOSUB 3860
3600  H0$[10,11]=H$
3610  Q=S
3620  GOSUB 3860
3630  H0$[13,14]=H$
3640  IF Y/4=INT(Y/4) THEN 3840
3650  RESTORE 3470
3660  MAT  READ A
3670  FOR I=1 TO 14
3680  IF D>A[I] THEN 3830
3690  IF I<14 THEN 3730
3700  D=D-A[13]
3710  Y=Y+1
3720  GOTO 3540
3730  Q=I-1
3740  GOSUB 3860
3750  H0$[1,2]=H$
3760  Q=D-A[I-1]
3770  GOSUB 3860
3780  H0$[4,5]=H$
3790  Q=Y
3800  GOSUB 3860
3810  H0$[7,8]=H$
3820  RETURN 
3830  NEXT I
3840  RESTORE 3460
3850  GOTO 3660
3860  REM NUMBER-TO-STRING
3870  N=INT(Q/10)
3880  H$[1,1]=G$[N+1,N+1]
3890  N=Q-N*10
3900  H$[2,2]=G$[N+1,N+1]
3910  RETURN 
3920  END 
