home *** CD-ROM | disk | FTP | other *** search
- 100 ' EXITRBBS.BAS, version 1.1
- 120 ' Routine to allow users to leave comments before logging off
- 140 ' Original by Brian Kantor & Skip Hansen 09/81 (?)
- 160 ' Minor text changes, bye call, and time-on-system stuff added
- 180 ' by Ben Bronson, 10/11/81
- 200 ' Note that this is meant to be compiled and called "BYE.COM"
- 220 ' Modified for Macrostore-R 10-18-81 -CAF
- 240 ' Main routine for users to leave comments before logging off
- 241 ' --------------------------------------------------------
- 242 ' 15/Jun/82 Added clock routines from ENTRBBS to allow exit
- 243 ' time of caller to be recorded. Caller status is checked from
- 244 ' and recorded in CALLERS along with out time. TWit status callers
- 245 ' don't get a chance to leave comments. TWit status may be entered
- 246 ' LASTCALR in ENTRBBS (from USERS) or by a password utility like
- 247 ' UTIL that a user has tried to break into. SYSOP bypasses the
- 248 ' out time recording as he never makes it into CALLERS. Added date
- 249 ' and "exit" to COMMENTS enteries so you can tell when and where
- 250 ' they were entered (MINIRBBS enters "Mini"). Bill Bolton
- 251 ' --------------------------------------------------------
- 252 ' 09/Aug/82 Added routine from MINIRBBS to give time on system.
- 253 ' Bill Bolton
- 254 ' --------------------------------------------------------
- 260 '
- 280 DEFINT A-Z
- 300 DIM H(6),HT(6),HD(6),TOD(5),DOY(5)
- 320 ERS$=CHR$(8)+" "+CHR$(8)
- 330 MAGIC$ = "SUPER"
- 340 OPEN "I",1,"A:LASTCALR":
- INPUT #1,N$,O$,F$,DT$:
- CLOSE
- 360 PRINT
- 370 IF F$ = "TW" THEN
- GOTO 720
- 380 PRINT "Want to leave any comments (Y/N)? ";:
- C=1:
- GOSUB 980:
- C=0
- 400 IF LEFT$(B$,1)="N" OR LEFT$(B$,1)="n" THEN
- 720
- 420 IF LEFT$(B$,1)<>"Y" AND LEFT$(B$,1)<>"y" THEN
- 380
- 440 PRINT
- 460 OPEN "R",1,"A:C"+CHR$(&HCF)+"MMENTS. "+CHR$(&HA0),65:
- FIELD#1,65 AS RR$
- 480 GET#1,1:
- RE=VAL(RR$)+1:
- RL=65
- 500 IF RE=1 THEN
- RE=2
- 520 S$="From: "+N$+" "+O$+" "+DT$+" (Exit)":
- GOSUB 1200
- 540 PUT#1,RE
- 560 PRINT "Enter comments, <return> to end, (16 lines max)"
- 580 PRINT
- 600 PRINT "-->";
- 620 GOSUB 980
- 640 IF B$="" THEN
- 700
- 660 RE=RE+1:
- S$=B$:
- RL=65:
- GOSUB 1200:
- PUT#1,RE
- 680 GOTO 600
- 700 S$=STR$(RE):
- RL=65:
- GOSUB 1200:
- PUT#1,1:
- CLOSE
- 720 GOSUB 1660:
- GOSUB 2300
- 730 IF N$ = MAGIC$ THEN
- GOTO 920 'Skip callers time out for SYSOP
- 740 OPEN "R",1,"A:CALLERS",60:
- FIELD#1, 60 AS RR$:
- GET #1,1
- 760 RE = VAL(RR$) + 1:
- RL = 60
- 780 GET #1,RE:
- INPUT#1,S$
- 800 IF INSTR(S$,":") THEN
- POINTER = INSTR(S$,":")
- ELSE
- POINTER = LEN(S$)
- 820 S$ = LEFT$(S$,POINTER + 2) + " to " + TI$ + " " + F$ + MID$(S$,POINTER + 3)
- 840 GOSUB 1200
- 860 PUT #1,RE:
- CLOSE #1
- 880 '
- 920 PRINT
- 930 GOSUB 44000
- 940 RUN "A:SUPER.COM"
- 960 END
- 980 '
- 1000 ' Accept string into B$ from console
- 1020 '
- 1040 GOSUB 1320
- 1060 B$=SAV$
- 1080 IF LEN(B$)=0 THEN
- RETURN
- 1100 IF C=0 THEN
- 1180
- 1120 FOR ZZ=1 TO LEN(B$)
- 1140 MID$(B$,ZZ,1)=CHR$(ASC(MID$(B$,ZZ,1))+32*(ASC(MID$(B$,ZZ,1))>96))
- 1160 NEXT ZZ
- 1180 RETURN
- 1200 '
- 1220 ' Fill and store disk record
- 1240 '
- 1260 LSET RR$=LEFT$(S$+SPACE$(RL-2),RL-2)+CHR$(13)+CHR$(10)
- 1280 RETURN
- 1300 '
- 1320 CHC=0:
- SAV$=""
- 1340 NCH=ASC(INPUT$(1))
- 1360 IF NCH=127 THEN
- 1500
- 1380 IF NCH<32 THEN
- 1560
- 1400 IF CHC>=62 THEN
- PRINT CHR$(7);:
- GOTO 1340
- 1420 SAV$=SAV$+CHR$(NCH):
- CHC=CHC+1:
- PRINT CHR$(NCH);
- 1440 IF CHC=55 THEN
- PRINT CHR$(7);
- 1460 GOTO 1340
- 1480 '
- 1500 IF CHC=0 THEN
- 1340
- ELSE
- PRINT RIGHT$(SAV$,1);:
- GOTO 1540
- 1520 IF CHC=0 THEN
- 1340
- ELSE
- PRINT ERS$;
- 1540 CHC=CHC-1:
- SAV$=LEFT$(SAV$,CHC):
- GOTO 1340
- 1560 IF NCH=8 THEN
- 1520
- 1580 IF NCH=13 THEN
- PRINT:
- RETURN
- 1600 IF NCH=21 THEN
- PRINT " #":
- GOTO 1320
- 1620 IF NCH<>24 OR CHC=0 THEN
- 1340
- 1640 FOR BCC=1 TO CHC:
- PRINT ERS$;:
- NEXT BCC:
- GOTO 1320
- 1660 ' Date getting subroutine
- 1680 BASEPORT = &H50
- 1700 CMDPORT = BASEPORT + 10
- 1720 DATAPORT = CMDPORT + 1
- 1740 '**********************************************************
- 1760 '* READ THE DATE DIGITS *
- 1780 '**********************************************************
- 1800 FOR DIGIT = 12 TO 7 STEP -1
- 1820 OUT CMDPORT,(&H10 + DIGIT)
- 1840 DOY(DIGIT - 7) = INP(DATAPORT)
- 1860 NEXT DIGIT
- 1880 YEAR= (DOY(5) * 10) + DOY(4)
- 1900 MONTH10 = DOY(3)
- 1920 MONTH1 = DOY(2)
- 1940 DAY10 = DOY(1)
- 1960 DAY1 = DOY(0)
- 1980 '**********************************************************
- 2000 '* FORMAT THE FIRST DATE STRING *
- 2020 '**********************************************************
- 2040 DATE1$=" "
- 2060 MID$(DATE1$,1,1) = RIGHT$(STR$(DAY10),1)
- 2080 MID$(DATE1$,2,1) = RIGHT$(STR$(DAY1),1)
- 2100 MID$(DATE1$,3,1) = "/"
- 2120 MID$(DATE1$,4,1) = RIGHT$(STR$(MONTH10),1)
- 2140 MID$(DATE1$,5,1) = RIGHT$(STR$(MONTH1),1)
- 2160 MID$(DATE1$,6,1) = "/"
- 2180 MID$(DATE1$,7,2) = RIGHT$(STR$(YEAR),2)
- 2200 DZ$ = DATE1$
- 2220 DT$ = LEFT$(DATE1$,5)
- 2240 DD$ = MID$(DATE1$,1,2)
- 2260 DM$ = MID$(DATE1$,4,2)
- 2280 RETURN
- 2300 '
- 2320 ' Time-finding subroutine
- 2340 FOR DIGIT = 5 TO 0 STEP -1
- 2360 OUT CMDPORT,(&H10 + DIGIT)
- 2380 TOD(DIGIT) = INP(DATAPORT)
- 2400 IF DIGIT = 5 THEN TOD(DIGIT) = TOD(DIGIT) AND 3
- 2420 NEXT DIGIT
- 2440 H(1) = TOD(5)
- 2460 H(2) = TOD(4)
- 2480 H(3) = TOD(3)
- 2500 H(4) = TOD(2)
- 2520 H(5) = TOD(1)
- 2540 H(6) = TOD(0)
- 2560 DH$ = " ":
- DI$ = " ":
- DS$ = " "
- 2580 MID$(DH$,1,1) = RIGHT$(STR$(H(1)),1):
- MID$(DH$,2,1) = RIGHT$(STR$(H(2)),1):
- MID$(DI$,1,1) = RIGHT$(STR$(H(3)),1):
- MID$(DI$,2,1) = RIGHT$(STR$(H(4)),1):
- MID$(DS$,1,1) = RIGHT$(STR$(H(5)),1):
- MID$(DS$,2,1) = RIGHT$(STR$(H(6)),1)
- 2600 TI$=DD$+"-"+DH$+":"+DI$
- 2620 TD$=DH$+":"+DI$+":"+DS$
- 2640 RETURN
- 44000 '
- 44002 'CLOCK ROUTINES
- 44005 '
- 44270 PRINT:
- PRINT "The time now is (Hrs:Mins:Secs).... ";
- 44280 TF$="#"
- 44290 FOR I=1 TO 6
- 44300 PRINT USING TF$;H(I);
- 44310 IF I=2 THEN
- PRINT ":";
- 44320 IF I=4 THEN
- PRINT ":";
- 44330 NEXT I
- 44340 PRINT
- 44700 ' Now get hh/mm/ss stored by enterbbs
- 44710 HT(1)=PEEK(74):
- HT(2)=PEEK(75):
- HT(3)=PEEK(76)
- 44720 HT(4)=PEEK(77):
- HT(5)=PEEK(78):
- HT(6)=PEEK(79)
- 44730 ' And calculate the difference...
- 44740 IF H(6)<HT(6) THEN
- H(6)=H(6)+10:
- H(5)=H(5)-1
- 44750 IF H(5)<HT(5) THEN
- H(5)=H(5)+6:
- H(4)=H(4)-1
- 44760 IF H(4)<HT(4) THEN
- H(4)=H(4)+10:
- H(3)=H(3)-1
- 44770 IF H(3)<HT(3) THEN
- H(3)=H(3)+6:
- H(2)=H(2)-1
- 44780 IF H(2)<HT(2) THEN
- H(2)=H(2)+10:
- H(1)=H(1)-1
- 44790 HD(6)=H(6)-HT(6):
- HD(5)=H(5)-HT(5):
- HD(4)=H(4)-HT(4)
- 44800 HD(3)=H(3)-HT(3):
- HD(2)=H(2)-HT(2):
- HD(1)=H(1)-HT(1)
- 44810 PRINT "You've been on the system for...... ";
- 44820 TF$="#"
- 44830 FOR I=1 TO 6
- 44840 PRINT USING TF$;HD(I);
- 44850 IF I=2 THEN
- PRINT ":";
- 45860 IF I=4 THEN
- PRINT ":";
- 45870 NEXT I
- 45880 PRINT:
- PRINT
- 45890 RETURN
-