1 '	signon subsystem -- Subsystem Manager
3 VERSION$="1.4 {10/14/82}"	'1.01 was initial release
5 '	by dick lieber
7 '
9 DEFDRIVE$="A:"
10 USERFILE$="USERS"
11 CALLERFILE$="CALLERS"
15 LASTCALRFILE$="LASTCALR"
16 COMMENTMGR$="COMGR"
17 USERMAINT$="USRMAINT"
18 COMMENTFILE$="COMMENTS"
20 PWDFILE$="pwds"
50 USER0%=0
67 BSTRING$=CHR$(8)+" "+CHR$(8)
68 CRLF$=CHR$(&HA)+CHR$(&HD)
70 DIM ACLARRAY%(5,11)
71 DIM FLAGS%(14)
77 ON ERROR GOTO 1000
80 '
81 '	function definition
82 '
83 '	add deliminators to time or date
84 DEF FNADDSEP$(DS$,DELIM$)=

	LEFT$(DS$,2)+DELIM$+MID$(DS$,3,2)+DELIM$+RIGHT$(DS$,2)
85 '	remove date or time deliminators
86 DEF FNKILLSEP$(DS$)=LEFT$(DS$,2)+MID$(DS$,4,2)+RIGHT$(DS$,2)
88 '	on-off function
90 DIM ONOFF$(1)
91 ONOFF$(0)="Off"
92 ONOFF$(1)="On"
93 DEF FNONOFF$(ONOFF%)=ONOFF$(ONOFF%)
94 DEF FNLINES$(NLINES%)=STRING$(NLINES%,CRLF$)
95 DEF FNHOURS$(TIME)=STR$(INT(TIME/60))+":"+

	RIGHT$("00"+MID$(STR$(TIME-(INT(TIME/60)*60)),2),2)
199 GOTO 10000
200 %include 200.SSB
300 '
302 '	set user number
304 '
306 USERMD=TESTADDRESS+9
312 CALL USERMD(SETUSERNUMBER%)
345 RETURN
400 %include 400500.SSB
600 %include 600.SSB
700 '
705 '	get string into ANSWER$ then CRLF
710 '
715 GOSUB 500: PRINT: RETURN
800 %include 800.SSB
1000 '
1004 '	error handler
1008 '1.1
1010 IF ERR=53 THEN NOFILE%=1: RESUME NEXT
1012 A$="Error Trap":CR%=2: GOSUB 400
1020 PRINT "ERR = ";ERR, "ERL = ";ERL
1028 END
1100 %include 1100.SSB
1200 '
1204 ' find name - get record
1208 ' 1.2
1211 SETUSERNUMBER%=USERNUMBER%: GOSUB 300
1212 NOTFOUND%=0
1216 REC%=2
1220 LAST$=SPACE$(14): FIRST$=RIGHT$(LAST$,10)
1224 LSET FIRST$=FRNAME$: LSET LAST$=LNAME$
1228	GET #1,REC%
1232	IF EOF(1) THEN NOTFOUND%=1:RETURN
1234	IF REC%=NEXTUSER THEN NOTFOUND%=1: RETURN
1236	IF FFNAME$=FIRST$ AND FLNAME$=LAST$ THEN GOSUB 1300: RETURN
1240	REC%=REC%+1
1244 GOTO 1228
1300 %include 1300.SSB
1400 %include 1400.SSB
1600 %include 1600.SSB
1700 '
1705 '	set default values to working individual variables
1710 ' 1.0
1715 ACLVL%=0
1720 SIGCNT=0
1725 NEWCOMER%=0
1730 SYSOP%=0
1735 PWD$= STRING$(13,42) ' *s
1740 LOCATION$=""
1745 LTIME$=""
1750 LDATE$=""
1755 ELAPTIME%=0
1760 TOTALTIME=0
1765 NOTATION$="normal"
1766 EXPERT%=0
1767 OLDUSER%=0
1770 RETURN
1800 '
1804 '	choose a password
1808 '
1811 OLDPWD$=PWD$
1812 PRINT
1816 A$="Choose a password.   It may be any":CR%=2:GOSUB 400
1820 A$="combination of characters, except RETURN and may":GOSUB 400
1824 A$="be up to 13 characters in length.":GOSUB 400
1828 A$="Press RETURN after typing your password.":GOSUB 400
1832 PRINT
1836 A$="	> ":CR%=1:GOSUB 400
1840 MAX%=13
1844 GOSUB 600
1845 IF NKEY%=0 THEN PWD$=OLDPWD$: RETURN
1848 PWD$=ANSWER$
1852 PRINT
1856 IF PWD$=STRING$(13,42) THEN A$="Sorry that password isn't allowed.":

			CR%=2:GOSUB 400: GOTO 1812
1860 A$="To make sure, type it again.":CR%=2:GOSUB 400
1864 A$="	> ":CR%=1:GOSUB 400
1868 GOSUB 600
1872 PRINT
1876 IF PWD$<>ANSWER$ THEN A$="They don't match.": GOSUB 400: GOTO 1812
1880 PRINT
1884 A$="		ok":CR%=2:GOSUB 400
1886 CHANGED%=1
1888 RETURN
2500 %include 2500.SSB
3100 '
3105 '	clear screen
3110 '
3115 A$=CLEARSCR$:CR%=1:GOSUB 400: RETURN
3120 '
3125 '	check authorization level of user
3130 ' 1.0
3131 PRINT "3131 you shouldm't be here!":END
3132 SETUSERNUMBER%=0: GOSUB 300
3135 OPEN "I", #1, DEFDRIVE$+LASTCALRFILE$
3140 INPUT #1, FRNAME$, LNAME$, ACLVL%
3145 CLOSE #1
3150 IF ACLVL% < AUTHLEVEL% THEN 3980
3155 RETURN
3300 '
3305 '	make selection
3310 '
3315 MAX%=0:GOSUB 500
3320 IF ANSWER$="" THEN SELECTION%=0: RETURN
3325 SELECTION%=ASC(ANSWER$)-64
3327 IF SELECTION% < 0 THEN SELECTION%=0
3330 RETURN
3600 '
3605 '	display working record
3610 '1.4	'POSYS only version
3615 PRINT
3635 PRINT TAB(15);"a   First Name: "; FRNAME$
3640 PRINT TAB(15);"b    Last Name: "; LNAME$
3645 PRINT TAB(15);"c Access Level: "; :

	IF ACLVL%=-1 THEN PRINT "TWIT" ELSE PRINT ACLVL%
3650 PRINT TAB(15);"d     Location: "; LOCATION$
3655 PRINT TAB(15);"e Last Date On: "; FNADDSEP$(LASTDATE$,"/")
3660 PRINT TAB(15);"f Last Time On: ";

	FNADDSEP$(LASTTIME$,":");" for";FNHOURS$(ELAPTIME%);" hr:mn."
3665 PRINT TAB(15);

	"g        Usage: "; SIGCNT;" signons in";FNHOURS$(TOTALTIME);" hr:mn"
3670 PRINT TAB(15);"h     Password: ";
3675 IF PWD$=STRING$(13,42) THEN PRINT STRING$(13,&H2D) 

		ELSE PRINT STRING$(13,42)
3680 RETURN
3900 '
3904 '	display list of callers
3908 '1.5	#
3912 GOSUB 3100	'clear
3916 NOFILE%=0
3920 GOSUB 8600	'open CALLERFILE$
3924 IF NOFILE<>0 THEN

	PRINT:PRINT TAB(20);"No ";CALLERFILE$;".":

	CLOSE #3:

	GOSUB 4700:

	RETURN
3928 PRINT "Press ^K to abort listing."
3932 PRINT "Total number of callers: ";LOGCNT#;
3936 IF NEXTRECORD=1 THEN PRINT TAB(20); CALLERFILE$;" empty."
3940 PRINT:PRINT:PRINT

	"caller        name            time-date      minutes   notation"
3944 FOR I=NEXTRECORD-1 TO 1 STEP -1
3952	GET #3, I+1
3956	DFNAME$=CFNAME$:DLNAME$=CLNAME$: ELAPTIME%=VAL(CTIMEON$)
3960	IF RIGHT$(DFNAME$,1)=" " THEN DFNAME$=LEFT$(DFNAME$,LEN(DFNAME$)-1):

		GOTO 3960
3964	IF RIGHT$(DLNAME$,A)=" " THEN DLANME$=LEFT$(DLNAME$,LEN(DLNAME$)-1):

		GOTO 3964
3968	PRINT USING "#### \                  \ & &    ###       &";

		I;DFNAME$+" "+DLNAME$;

		FNADDSEP$(CDATE$,"/");FNADDSEP$(CTIME$,":");ELAPTIME%;CNOTATION$
3969	KEY$=INKEY$: IF KEY$="S" OR KEY$="s" OR KEY$=CHR$(&H13)

	THEN PAUSE%=1 ELSE PAUSE%=0
3970	IF KEY$=CHR$(&HB) THEN ABORT%=1: GOTO 3976

		ELSE ABORT%=0
3971	IF PAUSE%<>0 AND LEN(INKEY$)=0 THEN GOTO 3971
3972 NEXT I
3976 CLOSE 3
3980 IF ABORT%<>0 THEN PRINT:PRINT TAB(30);"** Aborted **"
3984 GOSUB 4700	'pause
3988 RETURN
4700 '
4705 '	pause 
4710 '
4715 PRINT:PRINT TAB(25);
4720 LINE INPUT "Press RETURN to continue."; A$
4725 RETURN
5000 '
5005 '	test that user is the SYSOP
5010 '
5015 OPEN "I", #1, DEFDRIVE$+LASTCALRFILE$
5020	INPUT #1, FRNAME$,LNAME$,ACLVL%
5025 CLOSE #1
5030 IF FRNAME$+LANME$ = "SYSOP" AND ACLVL% => 9 THEN ZRETURN%=1 

		ELSE ZRETURN%=0
5035 RETURN
5100 '
5104 '	Subsystem Manager - Main menu
5108 ' 1.5
5112 GOSUB 3100
5116 PRINT
5120 PRINT TAB(30);"Signon Subsystem Manager"
5124 PRINT TAB(30);"<version ";VERSION$;">"
5128 PRINT
5132 PRINT TAB(20);"a	Maintain comments.";
5136 IF SYSCOM$="*" OR NEWCOM$="*" THEN PRINT " [New ";
5140 IF SYSCOM$="*" THEN PRINT "system ";
5144 IF SYSCOM$="*" AND NEWCOM$="*" THEN PRINT "and ";
5148 IF NEWCOM$="*" THEN PRINT "user ";
5152 IF SYSCOM$="*" OR NEWCOM$="*" THEN PRINT "comments]" ELSE

	PRINT
5156 PRINT TAB(20);"b	Display the roster of users."
5160 PRINT TAB(20);"c	Display list of callers."
5164 PRINT TAB(20);"d	Update ";USERFILE$;" file."
5168 PRINT TAB(20);"e	Enter/Edit a user's record."
5172 PRINT TAB(20);"f	Maintain ";CALLERFILE$;" file."
5176 PRINT TAB(20);"g	Configure subsystem."
5180 PRINT TAB(20);"h	Time of day"
5182 PRINT:PRINT TAB(20);"q	Leave subsystem manager."
5184 PRINT:PRINT TAB(25);"Press the letter of your selection > ";
5188 GOSUB 3300	'selector
5192 RETURN
5300 '
5304 '	exit subsystem manager
5308 '
5310 SETUSERNUMBER%=0:GOSUB 300
5316 END
5500 '
5505 '	initialize Subsystem manager variables
5510 '
5515 CHANGED%=0
5520 RETURN
6000 '
6005 '	get users first and last name
6010 '1.1 modified 11/16/82 by Jim Mills
6014 ABORT%=0
6015 GOSUB 3100
6016 PRINT FNLINES$(2); TAB(25);"Just press RETURN at firstname for main menu."
6017 PRINT FNLINES$(2); TAB(25);"or enter a record number (ie: 23)"
6020 MAX%=20:LNAME$=""		'bug fix 11/16/82
6025 PRINT FNLINES$(2)
6026 PRINT TAB(20);"First Name > ";: GOSUB 700: FRNAME$=ANSWER$
6027 IF NKEY%=0 THEN ABORT%=1: RETURN
6028 REM was: IF LEFT$(ANSWER$,1)="#" 
6029 REM was: THEN REC%=VAL(RIGHT$(ANSWER$,LEN(ANSWER$)-1))+1
6030 IF VAL(ANSWER$)<>0 THEN REC%=VAL(ANSWER$)+1

		:IF REC%<2 THEN REC%=2: RETURN ELSE RETURN
6031 REC%=0
6033 IF FRNAME$="SYSOP" THEN LNAME$="": RETURN
6035 PRINT FNLINES$(2)
6040 PRINT TAB(20);
6042 A$="Last Name > ": GOSUB 400: GOSUB 700: LNAME$=ANSWER$
6045 IF LNAME$="" THEN 6000
6050 RETURN
6100 '
6104 '	individual users
6108 '1.0
6109 ADDREC%=0
6110 GOSUB 1400
6112 GOSUB 6000	: IF ABORT%=1 THEN CLOSE #1: RETURN
6113 TRYAGAIN%=0
6116 IF REC%=0 THEN GOSUB 1200 ELSE GOSUB 7200	'search on name or get number
6117 IF TRYAGAIN%=1 THEN GOTO 6112
6118 IF NOTFOUND% <> 0 THEN GOSUB 6400 ELSE GOSUB 1300
6119 IF TRYAGAIN%=1  THEN GOTO 6112
6120 GOSUB 6200	'editor
6130 GOSUB 200
6140 GOTO 6100
6200 '
6204 '	user editor
6208 '
6212 GOSUB 3100
6214 DATE$=LASTDATE$: TIME$=LASTTIME$
6216 PRINT FNLINES$(2)
6217 IF DELETED%<>0 THEN GOTO 6260
6220 GOSUB 3600	'display user
6225 PRINT FNLINES$(2); TAB(15);"i	Delete record."
6226 PRINT TAB(15);"j	Display/Edit flags."
6228 PRINT FNLINES$(2);TAB(25);"Type letter of line to change > ";
6232 GOSUB 3300	'selector
6233 IF SELECTION%=0 THEN RETURN
6239 PRINT FNLINES$(4); TAB(20);
6240 ON SELECTION% GOSUB 6303,6307,6311,6316,6320,6320,6320,6332,6250,

	6600
6244 GOTO 6200
6250 DELETED%=1: RETURN
6260 PRINT TAB(20);FRNAME$+" "+LNAME$+"'s "+

		"record is deleted."
6263 PRINT FNLINES$(3); TAB(20);"a	Undelete this record."
6266 PRINT FNLINES$(2); TAB(20);"b	Leave deleted."
6269 PRINT FNLINES$(2); TAB(20);"Type letter > ";
6272 GOSUB 3300
6275 IF SELECTION%=1 THEN DELETED%=0: GOTO 6200
6278 RETURN
6300 '
6301 '	user editor subroutines
6302 '1.1	'#
6303 PRINT "Type new first name > ";
6304 MAX%=20: GOSUB 500: IF NKEY%=0 THEN RETURN
6305 FRNAME$=ANSWER$
6306 RETURN
6307 PRINT "Type new last name > ";
6308 MAX%=20: GOSUB 500: IF NKEY%=0 THEN RETURN
6309 LNAME$=ANSWER$
6310 RETURN
6311 PRINT "Type T to flag user as a twit or":

	PRINT TAB(20);"Enter new access level number > ";
6312 MAX%=2: GOSUB 500: IF NKEY%=0 THEN RETURN
6313 IF LEFT$(ANSWER$,4)="T" THEN ACLVL%=-1: RETURN
6314 ACLVL%=VAL(ANSWER$)
6315 RETURN
6316 PRINT "Type new location > ";
6317 MAX%=20: GOSUB 500: IF NKEY%=0 THEN RETURN
6318 LOCATION$=ANSWER$
6319 RETURN
6320 PRINT "Sorry, you can't change that."
6321 MAX%=0: GOSUB 500
6322 RETURN
6328 RETURN
6332 GOSUB 3100
6333 PRINT FNLINES$(3):  IF ACLVL% <= PWDACL% AND PWD$=STRING$(13,42)

		THEN GOTO 6390
6334 PRINT TAB(25);"a	Choose a new password."
6335 PRINT TAB(25);"b	Delete password "
6336 PRINT TAB(25);"	("+FRNAME$+" "+LNAME$+" will have to choose"
6337 PRINT TAB(25);"	 a new one.)"
6338 PRINT TAB(25);"c	Leave current password unchanged."
6339 PRINT FNLINES$(3); TAB(30);"Type selection letter > ";
6340 GOSUB 3300	'selector
6341 IF SELECTION%=1 THEN GOSUB 3100:PRINT:PRINT:

		GOSUB 1800: RETURN
6342 IF SELECTION%=2 THEN PWD$=STRING$(13,42)
6343 RETURN
6390 PRINT USING "		& ## & ";

	"Access levels thru";PWDACL%
6392 PRINT
6394 PRINT TAB(20);"don't require passwords."
6396 PRINT FNLINES$(2): GOSUB 4700
6397 RETURN
6400 '
6404 '	ask if new user is ok
6408 '1.1
6412 GOSUB 3100
6420 PRINT FNLINES$(4); TAB(20);FRNAME$+" "+LNAME$+" is not a current user."
6428 PRINT FNLINES$(3); TAB(20);"a	Enter into the system"
6432 PRINT TAB(20);"b	Try another name."
6436 GOSUB 3300	'selection
6444 IF SELECTION%=2 THEN TRYAGAIN%=1
6447 GOSUB 1700
6448 IF SELECTION%=1 THEN REC%=NEXTUSER: ADDREC%=1
6499 RETURN
6500 '
6503 '	remove deleted records -- make archive
6506 ' 1.3
6507 SETUSERNUMBER%=0: GOSUB 300
6510 JUMPFILE$=USERMAINT$
6525 GOSUB 7800
6550 RETURN
6600 '
6604 '	display/edit user's flags
6608 '1.1
6612 GOSUB 3100
6616 PRINT FNLINES$(2)
6620 PRINT TAB(30);FRNAME$;" ";LNAME$
6624 PRINT FNLINES$(3)
6628 PRINT TAB(15);"a        Expert: ";FNONOFF$(EXPERT%)
6632 PRINT TAB(15);"b      Old User: ";FNONOFF$(OLDUSER%)
6636 PRINT TAB(15);"c Need Location: ";FNONOFF$(NEEDLOC%)
6640 PRINT FNLINES$(3)
6644 PRINT TAB(20);"Press letter to change > ";
6648 GOSUB 3300
6652 IF SELECTION%=0 THEN RETURN
6656 ON SELECTION% GOSUB 6664,6676,6684
6660 GOTO 6600
6664 IF ACLVL% < PWDACL% AND EXPERT%=0 THEN PRINT FNLINES$(2):

	PRINT TAB(30);"User's with access levels lower than";PWDACL%+1:

	PRINT TAB(30);"cannot be experts.": GOSUB 4700: RETURN
6668 IF EXPERT%=0 THEN EXPERT%=1 ELSE EXPERT%=0
6672 RETURN
6676 IF OLDUSER%=0 THEN OLDUSER%=1 ELSE OLDUSER%=0
6680 RETURN
6684 IF NEEDLOC%=0 THEN NEEDLOC%=1 ELSE NEEDLOC%=0
6688 RETURN
7200 '
7204 '	get a user by record number
7208 '1.1
7209 SETUSERNUMBER%=USERNUMBER%: GOSUB 300
7212 GET #1, REC%
7216 IF NOT EOF(1) THEN RETURN
7255 TRYAGAIN%=1
7257 NOTFOUND%=1
7260 GOSUB 3100
7268 PRINT FNLINES$(4);  TAB(25);"Record number";REC%-1;" does not exist."
7270 PRINT:PRINT TAB(25);"Use option 'b' from the main menu to see the"
7274 PRINT:PRINT TAB(25);"roster of users."
7276 PRINT FNLINES$(3)
7280 GOSUB 4700
7290 RETURN
7600 '
7605 '	jumpout to configurator
7610 '
7615 SETUSERNUMBER%=0: GOSUB 300
7620 JUMPFILE$="CONFIG"
7625 GOSUB 7800
7630 RETURN
7700 '
7705 '	jumpout to comments manager
7710 '
7712 SETUSERNUMBER%=0: GOSUB 300
7715 JUMPFILE$=COMMENTMGR$
7720 GOSUB 7800
7725 RETURN
7800 %include 7800.SSB
8000 '
8010 '	dummy
8020 '	no system comments needed
8030 '
8040 RETURN
8100 '
8104 '	check for new comments
8108 '
8110 SETUSERNUMBER%=USERNUMBER%: GOSUB 300
8112 OPEN "R", #3,DEFDRIVE$+COMMENTFILE$, 66
8116 FIELD #3,

	5 AS COMMENTNUMBER$,

	8 AS TOTCOMMT$,

	1 AS COMSIG$,

	6 AS FCOMDATE$,

	6 AS FCOMTIME$,

	1 AS FINEWCOM$,

	1 AS FSYSCOM$
8117 GET #3,1
8120 IF COMSIG$="*" THEN

	NEWCOM$=FINEWCOM$:

	SYSCOM$=FSYSCOM$
8124 CLOSE #3
8128 RETURN
8500 '
8504 '	maintain CALLERFILE$
8508 '
8512 GOSUB 3100
8516 PRINT TAB(30);CALLERFILE$;" Manager"
8524 PRINT FNLINES$(4); TAB(20);"a	view callers log."
8528 PRINT FNLINES$(2); TAB(20);"b	Make archive of current callers."
8532 PRINT FNLINES$(2); TAB(20);"c	Delete current callers from log."
8536 PRINT FNLINES$(2); TAB(20);"d	View an archive callers log."
8540 PRINT FNLINES$(3); TAB(20);"Press letter of your choice > ";
8543 GOSUB 3300
8544 IF SELECTION%=0 THEN RETURN
8548 ON SELECTION% GOSUB 3900,8700,8800,8900
8552 GOTO 8500
8600 '
8605 '	open CALLERFILE$
8610 ' 1.0	(POSYS only)
8611 NOFILE%=0
8615 SETUSERNUMBER%=USERNUMBER%: GOSUB 300
8620 OPEN "R",#3, DEFDRIVE$+CALLERFILE$, 75
8625 FIELD #3,

	8  AS CLOGCNT$,

	6  AS FCALDATE$,

	6  AS FCALTIME$,

	1  AS SIGNATURE$,

	8  AS CLREC$
8630 GET #3,1
8635 IF SIGNATURE$<>"*" THEN

	NOFILE%=1:	GOSUB 1600:

	LSET FCALDATE$=DATE$: LSET FCALTIME$=TIME$:

	LSET SIGNATURE$="*": LSET CLOGCNT$=STR$(0): LSET CLREC$=STR$(2):

	PUT #3,1:

	RETURN
8640 LOGCNT#=VAL(CLOGCNT$)
8645 NEXTRECORD = VAL(CLREC$)
8655 FIELD #3, 20 AS CFNAME$,

		20 AS CLNAME$,

		6  AS CDATE$,

		6  AS CTIME$,

		6  AS CTIMEON$,

		10 AS CNOTATION$,

		2  AS CCRLF$
8660 RETURN
8700 '
8704 '	make archive of CALLERFILE$
8707 '1.1
8708 GOSUB 3100
8711 GOSUB 8600	'open CALLERFILE$
8715 IF NOCALLERS%<>0 THEN

	PRINT:PRINT TAB(20);CALLERFILE$ ;" is empty.":

	CLOSE #3:

	GOSUB 4700:

	RETURN
8719 GOSUB 1600
8720 PRINT TAB(20);"Making ";FNADDSEP$(DATE$,"/");".CLR from ";CALLERFILE$;"."
8721 PRINT
8722 SETUSERNUMBER%=0: GOSUB 300
8723 OPEN "O", #2, MGRDRIVE$+FNADDSEP$(DATE$,"/")+".CLR"
8725 CALLERCOUNT%=0
8727 FOR CALREC=2 TO NEXTRECORD
8731	GET #3, CALREC
8735	PRINT #2,

		CFNAME$;" ";

		CLNAME$;" ";

		FNADDSEP$(CDATE$,"/");" ";

		FNADDSEP$(CTIME$,":");" ";

		CTIMEON$;" ";

		CNOTATION$
8736	CALLERCOUNT%=CALLERCOUNT%+1
8737	PRINT ".";
8739 NEXT CALREC
8743 CLOSE #3
8747 CLOSE #2
8748 PRINT FNLINES$(3); TAB(20); CALLERCOUNT%;"callers written to ";

	FNADDSEP$(DATE$,"/")+".CLR"
8750 GOSUB 4700
8783 RETURN
8800 '
8805 '	delete callers from CALLERFILE$
8810 '1.1
8815 GOSUB 3100
8820 PRINT FNLINES$(3); TAB(20);"Type D to delete callers."
8825 PRINT FNLINES$(2); TAB(20);"Press RETURN for ";CALLERFILE$;" menu."
8830 GOSUB 3300	'selector
8835 IF SELECTION%<>4 THEN RETURN
8840 GOSUB 8600	'open CALLERFILE$
8845 OLDLOGCNT#=LOGCNT#
8850 CLOSE #3
8852 SETUSERNUMBER%=USERNUMBER%: GOSUB 300
8855 KILL DEFDRIVE$+CALLERFILE$
8865 GOSUB 8600
8870 LSET CLOGCNT$ = STR$(OLDLOGCNT#)
8875 LSET CLREC$ = STR$(1)
8880 LSET SIGNATURE$="*"
8885 PUT #3,1
8890 CLOSE #3
8895 RETURN
8900 '
8904 '	view a CALLER archieve
8908 ' 1.0
8912 GOSUB 3100
8916 PRINT FNLINES$(2); TAB(20);"These are the archive callers files:"
8920 PRINT
8923 NOFILE%=0
8924 SETUSERNUMBER%=0:GOSUB 300:

	FILES MGRDRIVE$+"????????.CLR"
8928 IF NOFILE%<>0 THEN 

	PRINT TAB(20);"No archive of callers on this disk/user.":

	GOSUB 4700:

	RETURN
8932 PRINT FNLINES$(2); TAB(20);"Type date of archive callers file > ";
8936 MAX%=8: GOSUB 700
8940 IF NKEY%=0 THEN RETURN
8943 DRIVE$=MGRDRIVE$
8944 FIL$=ANSWER$+".CLR"
8948 SWAP USER0%,USERNUMBER%:

	GOSUB 800:

	SWAP USER0%,USERNUMBER%
8949 IF NOFILE%<>0 THEN 

	PRINT : PRINT TAB(20);FIL$;" does not exist on this disk/user.":

	GOSUB 4700:

	GOTO 8900
8952 PRINT
8956 GOSUB 4700
8960 RETURN
9200 '
9204 '	time of day clock
9208 ' 1.0
9210 GOSUB 3100
9212 GETDAY%=1
9216 GOSUB 1600
9220 PRINT FNLINES$(5); TAB(20);

	FNADDSEP$(TIME$,":");" ";DAY$;" ";FNADDSEP$(DATE$,"/")
9224 GOSUB 4700
9228 RETURN
10000 '
10010 '	main program starts here
10020 ' 1.2
10025 GOSUB 1100
10030 IF SYSOPONLY%=1 THEN GOSUB 5000 ELSE ZRETURN%=1
10040 IF ZRETURN%=0 THEN PRINT "POSYS?": END
10055 IF NOFILE%<> 0 THEN PRINT "Bad start - See SIGNON.DOC": END
10056 GOSUB 8100	'check for comments
10060 GOSUB 5100
10065 IF SELECTION%=17 THEN 5300
10070 ON SELECTION% GOSUB 7700,2500,3900,6500,6100,8500,7600,

				9200
10080 GOTO 10060
20000 END
