10  F1=0
20  FILES *,*
30  DIM G$[255],T$[255],F$[255],U$[255]
40  PURGE X,"MBXSCR"
50  SYSTEM U$[1,4],"TIM"
60  IF U$="B000" THEN 3030
70  CREATE R,"MBXSCR",1
80  SYSTEM X,"PRI-MBXSCR"
90  IF R=0 THEN 170
100  IF R=1 THEN 140
110  PRINT "YOU MUST HAVE 1 FREE RECORD OF STORAGE FOR THIS PROGRAM"
120  PRINT "TO WORK. PURGE SOMETHING AND RESTART THIS PROGRAM."
130  STOP 
140  PRINT "NAME 'MBXSCR' CAN'T EXIST IN YOUR DIRECTORY. PURGE IT"
150  PRINT "AND RESTART THIS PROGRAM."
160  STOP 
170  ASSIGN "MBXSCR",1,R, PR 
180  REM CHECK FOR MAIL
190  PRINT "WAIT..."'7
200  GOSUB 2990
210  IF  END #2 THEN 310
220  X=0
230  X=X+1
240  READ #2,X
250  IF TYP(2)=3 THEN 230
260  READ #2;T$
270  IF T$#U$ THEN 230
280  ASSIGN *,2
290  PRINT "[YOU HAVE MAIL]"
300  GOTO 330
310  ASSIGN *,2
320  PRINT "[YOU HAVE NO MAIL]"
330  PRINT LIN(1);"OPTION :"
340  PRINT "        Read mail"
350  PRINT "        Send mail"
360  PRINT "        Bulletin Board"
370  PRINT "        Quit"
380  PRINT "Type the first letter of the option"
390  PRINT LIN(1);"Option >";
400  G$=""
410  ENTER 255,X2,G$
420  IF X2=-256 THEN 410
430  PRINT 
440  IF G$="R" THEN 800
450  IF G$="S" THEN 1390
460  IF G$="B" THEN 2470
470  IF G$="Q" THEN 770
480  IF G$="?" THEN 690
490  IF U$#"A000" THEN 330
500  IF G$#"G" THEN 330
510  REM GARBAGE COLLECTION
520  PRINT "CHECKING FOR OVERAGE MAIL..."
530  X=0
540  GOSUB 2990
550  FOR X=1 TO 100
555  IF  END #2 THEN 660
560  READ #2,X
570  IF TYP(2)=3 THEN 650
580  READ #2;T$,F$,D
590  IF TIM(2) >= D THEN 610
600  D=D-365
610  IF (TIM(2)-21) <= D THEN 650
620  READ #2,X
630  PRINT #2; END 
640  PRINT "*";
650  NEXT X
660  ASSIGN *,2
670  PRINT "END OF OVERAGE DELETION ROUTINE"
680  GOTO 390
690  REM HELP
700  PRINT "OPTIONS :"
710  PRINT "   Read mail       -- Reads mail sent to your account only"
720  PRINT "   Send mail       -- Sends mail to an account of your choice"
730  PRINT "   Bulletin Board  -- Allows posting and reading of general coments"
740  PRINT "   Quit            -- ends current function"
750  PRINT LIN(1);"Type the first letter of the option only"
760  GOTO 390
770  ASSIGN *,1
780  PURGE R,"MBXSCR"
790  STOP 
800  REM READ MAIL
810  X=C=0
820  X=X+1
830  GOSUB 2990
840  IF  END #2 THEN 1340
850  READ #2,X
860  IF TYP(2)=3 THEN 820
870  READ #1,1
880  READ #2;T$
890  IF T$=U$ THEN 920
900  ASSIGN *,2
910  GOTO 820
920  READ #2;F$,D
930  IF TYP(2)=3 THEN 970
940  READ #2;G$
950  PRINT #1;G$
960  GOTO 930
970  PRINT #1; END 
980  ASSIGN *,2
990  READ #1,1
1000  PRINT "FROM: ";F$;"    MAIL ID #";X
1010  PRINT 
1020  C=C+1
1030  IF TYP(1)=3 THEN 1070
1040  READ #1;G$
1050  PRINT G$
1060  GOTO 1030
1070  IF F1=0 THEN 1140
1080  PRINT "Continue ?";
1090  LINPUT G$
1100  IF G$[1,1]="N" THEN 1340
1110  PRINT "Wait ..."'7
1120  PRINT LIN(2)
1130  GOTO 820
1140  G$=""
1150  PRINT "Delete ( Y/N )";
1160  ENTER 255,X3,G$
1170  PRINT 
1180  IF X3=-256 THEN 1160
1190  IF G$[1,1]="" THEN 1270
1200  IF G$="Y" THEN 1290
1210  IF G$="N" THEN 1270
1220  IF G$#"?" THEN 1070
1230  PRINT "IF YOU SAY 'Y' THEN IT WILL BE PURGED FROM THE MAIL FILE."
1240  PRINT "IF YOU SAY 'N' THEN IT WILL BE LEFT ALONE AND WHEN YOU READ"
1250  PRINT "YOUR MAIL AGAIN, IT WILL BE THERE AGAIN."
1260  GOTO 1070
1270  PRINT "LEFT UNDELETED"
1280  GOTO 820
1290  GOSUB 2990
1300  PRINT #2,X; END 
1310  ASSIGN *,2
1320  PRINT "WAIT"'7"...."
1330  GOTO 820
1340  ASSIGN *,2
1350  IF F1=1 THEN 2720
1360  IF C>0 THEN 390
1370  PRINT "THERE IS NO MAIL FOR YOU"
1380  GOTO 390
1390  REM MAIL SENDING
1400  X=0
1410  GOSUB 2990
1420  IF  END #2 THEN 1470
1430  X=X+1
1440  READ #2,X
1450  IF TYP(2)=3 THEN 1510
1460  GOTO 1430
1470  ASSIGN *,2
1480  PRINT "NO ROOM IN MAIL FILE--SORRY!"
1490  IF F1=1 THEN 2550
1500  GOTO 390
1510  PRINT #2;"MINE","XXXX",1
1520  ASSIGN *,2
1530  IF F1=0 THEN 1600
1540  T$="!!!!"
1550  PRINT "# OF DAYS POSTED? (MAX=21)";
1560  INPUT G
1570  IF G<1 OR G>21 THEN 1550
1580  G=21-G
1590  GOTO 1850
1600  PRINT "MAIL ID #";X;"  FROM: ";U$
1610  PRINT "TO: [ACCT. NO.] (TO 'QUIT' TO ABORT)";
1620  INPUT T$
1630  IF T$="QUIT" THEN 1780
1640  REM *** NO MAIL TO 'A' ACCOUNTS FROM 'B' ACCOUNTS ****
1650  IF U$[1,1]="B" THEN 1670
1660  GOTO 1690
1670  IF T$="A000" THEN 1690
1680  IF T$[1,1]="A" THEN 1760
1690  ASSIGN "ACT01F.A100",2,R, PR 
1700  IF R=6 THEN 1690
1710  IF  END #2 THEN 1750
1720  READ #2;G$
1730  IF G$=T$ THEN 1830
1740  GOTO 1720
1750  ASSIGN *,2
1760  PRINT "INVALID USER NAME"
1770  GOTO 1610
1780  GOSUB 2990
1790  PRINT #2,X; END 
1800  ASSIGN *,2
1810  IF F1=1 THEN 2550
1820  GOTO 390
1830  ASSIGN *,2
1840  G=0
1850  PRINT "TYPE IN MSG., ONE LINE AT A TIME, 'QUIT' ON A LINE BY ITSELF"
1860  PRINT "TO END THE MSG."
1870  READ #1,1
1880  S=200
1890  Y=0
1900  Y=Y+1
1910  PRINT Y;" :";
1920  LINPUT G$
1930  G$=UOS$(G$)
1940  IF G$="QUIT" THEN 2030
1950  S=S-INT((LEN(G$)+2)/2+1)
1960  IF S<1 THEN 2000
1970  PRINT #1;G$
1980  PRINT "(";S;"CHAR'S LEFT )"
1990  GOTO 1900
2000  S=S+INT((LEN(G$)+2)/2+1)
2010  PRINT "LINE TOO LONG--ONLY ";S;"CHAR'S LEFT!"
2020  GOTO 1910
2030  PRINT #1; END 
2040  PRINT "Edit which line , < CR > if O.K. ";
2050  Y=0
2060  ENTER 255,Q1,Y
2070  PRINT 
2080  IF Q1=-256 THEN 2060
2090  IF Y=-1 THEN 1780
2100  IF Y=0 THEN 2340
2110  READ #1,1
2120  IF Y=1 AND TYP(1)#3 THEN 2170
2130  ADVANCE #1;Y-1,R
2140  IF R=0 AND TYP(1)#3 THEN 2170
2150  PRINT "ILLEGAL LINE NUMBER OR OPTION. REENTER. NUMBER";
2160  GOTO 2060
2170  READ #1;G$
2180  PRINT "HERE IS THE OLD LINE. RE-TYPE IT. THE NEW LINE MUST BE EITHER"
2190  PRINT "EQUAL IN LENGTH OR SHORTER THAN THE OLD LINE."
2200  PRINT SPA(2);":";
2210  PRINT G$
2220  Q2=LEN(G$)
2230  PRINT SPA(2);":";
2240  LINPUT G$
2250  IF LEN(G$)>Q2 THEN 2270
2260  GOTO 2290
2270  PRINT "Too many chrs... "
2280  GOTO 2230
2290  READ #1,1
2300  IF Y=1 THEN 2320
2310  ADVANCE #1;Y-1,R
2320  UPDATE #1;G$
2330  GOTO 2040
2340  READ #1,1
2350  GOSUB 2990
2360  READ #2,X
2370  PRINT #2;T$,U$,TIM(2)-G
2380  IF  END #1 THEN 2420
2390  READ #1;G$
2400  PRINT #2;G$
2410  GOTO 2390
2420  PRINT #2; END 
2430  ASSIGN *,2
2440  IF F1=1 THEN 2660
2450  PRINT "OKAY--MAIL SENT"
2460  GOTO 390
2470  REM BULLETIN BOARD
2480  PRINT "Bulletin Board"
2490  PRINT "OPTIONS :"
2500  PRINT "         Post"
2510  PRINT "         Read"
2520  PRINT "         Quit"
2530  PRINT "         Cancel"
2540  REM
2550  PRINT LIN(2);"BBOARD OPTION: ";
2560  G$=""
2570  LINPUT G$[1,1]
2580  IF G$="P" THEN 2640
2590  IF G$="C" THEN 2790
2600  IF G$="R" THEN 2690
2610  IF G$="Q" THEN 390
2620  PRINT "ERROR, ENTER ";
2630  GOTO 2550
2640  F1=1
2650  GOTO 1390
2660  PRINT "MESSAGE POSTED"
2670  F1=0
2680  GOTO 2550
2690  F1=1
2700  U$="!!!!"
2710  GOTO 800
2720  IF C>0 THEN 2750
2730  PRINT "BULLETIN BOARD EMPTY"
2740  GOTO 2760
2750  PRINT "END OF BULLETIN BOARD"
2760  F1=0
2770  SYSTEM U$[1,4],"TIM"
2780  GOTO 2550
2790  REM CANCEL MAIL
2800  PRINT "ENTER THE MAIL ID, 0 TO ABORT";
2810  INPUT X
2820  IF X=0 THEN 2550
2830  GOSUB 2990
2840  READ #2,X
2850  IF TYP(2)=3 THEN 2940
2860  READ #2;T$,F$
2870  IF T$#"!!!!" THEN 2960
2880  IF F$#U$ THEN 2960
2890  READ #2,X
2900  PRINT #2; END 
2910  ASSIGN *,2
2920  PRINT "CANCELLED"
2930  GOTO 2550
2940  PRINT "THERE IS NO MAIL OF ANY SORT AT THAT LOCATION!"
2950  GOTO 2550
2960  PRINT "CANCELLABLE MESSAGES ARE: BBOARD MSGS SENT BY YOU..."
2970  PRINT "ALL OTHER MESSAGES CAN'T BE KILLED HERE!"
2980  GOTO 2550
2990  REM ASSIGN SUBROUTINE
3000  ASSIGN "MBX01F.A100",2,R, PR 
3010  IF R=6 THEN 3000
3020  RETURN 
3030  PRINT U$;" NOT ALLOWED"'7
3040  STOP 
3050  END 
