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);"" 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