Based on TinyBoard, with improvements.
Content
Image Gallery
Source Code
3 REM SYMBL SHIFT S "NOT" ENDS CHAT MODE FOR SYSOP. 5 REM SYMBL SHIFT 2 "@" SAVES MESSAGE FOR SYSOP. 10 GO TO VAL "9000" 1000 PRINT "AWAITING A CALL" 1001 OUT VAL "119",VAL "34" 1002 OUT VAL "119",NOT PI 1010 PRINT AT VAL "4",NOT PI;"CHAT IS ";b$ 1011 PRINT AT VAL "10",NOT PI;"CODE ENTRY IS ";s$ 1012 PRINT AT PI+PI,NOT PI;"CALLS RECEIVED ";s 1014 PRINT AT VAL "8",NOT PI;"MESSAGES ";w 1015 LET a=IN CODE "w" 1016 IF CODE INKEY$=CODE "NOT " THEN GO TO edit 1020 IF a=VAL "5" THEN GO TO ansloop 1070 OUT CODE "w",VAL "2" 1080 OUT CODE "w",VAL "34" 1090 PAUSE VAL "300" 2001 OUT CODE "w",CODE "@": OUT CODE "w",CODE "{": OUT CODE "w",CODE "7": POKE VAL "23674",NOT PI: POKE VAL "23673",NOT PI: POKE VAL "23672",NOT PI 2003 PAUSE CODE "x": CLS : GO SUB logonbull: LET x=IN CODE "s": LET p$="Full NAME: ": GO SUB send: GO SUB inname: LET u$=y$:: LPRINT u$ 2004 IF o=SGN PI THEN GO TO VAL "2006" 2005 LET f=NOT PI: LET f1=f: LET p$="Code Input: ": GO SUB send: GO SUB incode 2006 LET y=f: RESTORE VAL "2007" 2007 DATA "--------------------------------"," *>*> EXECUTIVE MAIN MENU <*<*","<R>ead Messages <L>eave Message","<C>hat Mode <T>ime On","<D>aily Special <S>ystems Data","<M>essage Log <G>oodbye","--------------------------------","Choice?: " 2008 GO SUB cr:: IF USR output THEN : OUT CODE "s",CODE " ": PRINT 2020 FOR p=SGN PI TO VAL "8": PRINT : IF USR output THEN : OUT CODE "s",VAL "13" AND p<VAL "8": READ p$: GO SUB send 2034 NEXT p 2036 GO SUB timer: IF VAL x$(VAL "4" TO SQR EXP PI)>VAL "30" THEN LET f1=SGN PI: GO TO quit 2037 ON ERR GO TO quit: LET c$=CHR$ USR input: PRINT c$: PRINT 2038 IF c$="d" OR c$="D" THEN LET p$=h$: OUT CODE "s",VAL "13": GO SUB send: PAUSE CODE "x": GO TO inputcom 2039 IF c$="s" OR c$="S" THEN LET p$=z$: OUT CODE "s",VAL "13": GO SUB send: PAUSE CODE "x": GO TO inputcom 2040 IF c$="r" OR c$="R" THEN FOR x=SGN PI TO SQR PI: GO SUB cr:: NEXT x: GO TO read 2041 IF c$="t" OR c$="T" THEN GO SUB timer: LET p$="Connect Time ": LET p$=p$+x$: GO SUB scr::: GO TO menu 2043 IF c$="M" OR c$="m" THEN GO TO VAL "4500" 2045 IF c$="c" OR c$="C" THEN GO TO chat 2047 IF c$="g" OR c$="G" THEN PAUSE VAL "30": GO TO quit 2050 IF c$="l" OR c$="L" THEN GO TO leave 2070 GO TO inputcom 3000 LET p$="Message Number? ": GO SUB send: GO SUB innum 3015 LET y=numin 3018 IF m$(y,SGN PI)=" " THEN LET p$(SGN PI TO VAL "28")="No message Found............": LET p$=p$(SGN PI TO VAL "28")+CHR$ PI: GO SUB scr::: GO TO inputcom 3019 PRINT AT VAL "21",NOT PI;" ": PRINT AT VAL "21",NOT PI;y: LET c$=SCREEN$ (VAL "21",NOT PI): LET c$=c$+SCREEN$ (VAL "21",SGN PI): LET p$="MESSAGE NUMBER: "+c$: GO SUB cr: GO SUB scr 3024 FOR v=SGN PI TO VAL "563": POKE VAL "23692",CODE " COPY " 3025 IF CODE m$(y,v)=INT PI THEN LET v=VAL "564": NEXT v: PAUSE CODE "<": GO TO VAL "3036" 3030 PRINT m$(y,v);: IF USR output THEN : OUT CODE "s",CODE m$(y,v) 3031 IF v>CODE "@" THEN NEXT v 3032 IF (v>CODE " " AND CODE m$(y,v)=VAL "13") THEN LET v=CODE "@": GO SUB cr: 3033 IF (v<CODE " " AND CODE m$(y,v)=VAL "13") THEN LET v=CODE " " 3035 NEXT v: GO SUB cr: GO SUB sendv 3040 LET p$="Read Another? (Y/N) ": GO SUB scr::: 3042 LET v$=CHR$ USR input: PRINT v$ 3045 IF v$="y" OR v$="Y" THEN GO TO read 3060 GO TO inputcom 4010 LET y1=y1+SGN PI: IF y1>CODE "(" THEN LET y1=SGN PI 4011 DIM l$(VAL "564"): LET m$(y1)=l$ 4012 GO SUB cr: LET p$="To Whom? : ": GO SUB send: ON ERR GO TO inputcom: LET m$(y1,SGN PI TO VAL "4")="TO: ": FOR x=SQR EXP PI TO CODE " ": LET m$(y1,x)=CHR$ USR input: PRINT m$(y1,x); 4013 IF CODE m$(y1,x)=VAL "13" THEN LET x=CODE " " 4014 NEXT x 4015 LET m$(y1,CODE "!" TO CODE "&")="FROM: ": LET m$(y1,CODE "'" TO CODE "@")=u$ 4018 GO SUB cr: LET p$="Input Message (500 chars Max)..Type<CONTROL C> To Save...": GO SUB scr: 4019: FOR x=SGN PI TO SQR PI: GO SUB cr: NEXT x 4020 ON ERR GO TO quit: FOR v=CODE "A" TO VAL "563": POKE VAL "23692",CODE " COPY ": LET m1=USR input 4050 LET m$(y1,v)=CHR$ m1: PRINT m$(y1,v);: IF m1=INT PI THEN LET v=VAL "564": NEXT v: LET w=w+SGN PI: LET p$="SAVED...": GO SUB cr: GO SUB scr: PAUSE VAL "30": GO TO inputcom 4053 IF CODE m$(y1,v)<VAL "8" OR CODE m$(y1,v)>CODE "z" THEN LET m$(y1,v)=CHR$ PI: LET v=VAL "564": NEXT v: GO TO inputcom 4054 IF CODE m$(y1,v)>=VAL "24" AND CODE m$(y1,v)<=VAL "31" THEN LET m$(y1,v)=CHR$ PI: LET v=VAL "564": NEXT v: GO TO inputcom 4055 NEXT v 4070 GO TO inputcom 4500 FOR q=SGN PI TO CODE "(" 4510 IF m$(q,1)="T" THEN GO SUB VAL "4600" 4520 NEXT q 4530 LET p$="END OF MESSAGE LOG -" 4535 GO SUB scr: GO TO inputcom 4600 PRINT AT VAL "21",NOT PI;" ": PRINT AT VAL "21",NOT PI;q: LET c$=SCREEN$ (VAL "21",NOT PI): LET c$=c$+SCREEN$ (VAL "21",SGN PI): LET p$="MESSAGE NUMBER: "+c$: GO SUB cr: GO SUB scr 4610 LET p$=m$(q,SGN PI TO VAL "28") 4620 GO SUB send: GO SUB cr: RETURN 5000 LET n$="\d\i\s\c\oN\n\e\c\t": BORDER NOT PI: CLS 5001 ON ERR RESET 5105 CLS : PAUSE PI*PI 5110 LET p$="*****Thank You For Calling!*****"+q$+" >>ROBERTS LABS. B.B.S.<< "+q$+" Goodbye - " 5112 IF f=SGN PI THEN LET p$(SGN PI TO VAL "28")="YOU ENTERED AN IMPROPER CODE" 5113 IF f1=SGN PI THEN LET p$(SGN PI TO VAL "28")="SORRY - YOUR TIME IS UP....." 5115 PAUSE VAL "30": CLS : IF USR output THEN : OUT CODE "s",VAL "28": IF USR output THEN : OUT CODE "s",VAL "31" 5120 GO SUB send 5121 PAUSE CODE "x" 5125 OUT CODE "w",CODE "@": OUT CODE "w",NOT PI: OUT CODE "w",NOT PI 5130 PAUSE CODE "x": CLS : GO TO autoans 6000 LET s=s+SGN PI 6001 PAUSE CODE "<": FOR x=SGN PI TO VAL "30": IF USR output THEN : OUT CODE "s",NOT PI: NEXT x 6002 IF IN CODE "w"<CODE "\ " THEN GO TO quit 6005 IF USR output THEN : OUT CODE "s",VAL "28": IF USR output THEN : OUT CODE "s",VAL "31" 6008 IF USR output THEN : OUT CODE "s",VAL "28" 6010 FOR x=SGN PI TO VAL "10": GO SUB cr: NEXT x 6020 FOR x=SGN PI TO LEN t$: POKE VAL "23692",CODE " COPY ": PRINT t$(x);: IF USR output THEN : OUT CODE "s",CODE t$(x): NEXT x 6025 FOR x=SGN PI TO LEN j$: POKE VAL "23692",CODE " COPY ": PRINT FLASH SGN PI;j$(x);: IF USR output THEN : OUT CODE "s",CODE j$(x): NEXT x 6030 FOR x=SGN PI TO SQR EXP PI: GO SUB cr: NEXT x 6040 RETURN 6500 CLS : LET t$="" 6510 INPUT AT VAL "22",NOT PI;AT NOT PI,NOT PI; LINE t$ 6530 CLS : GO TO VAL "8500" 6600 CLS : LET h$="" 6610 INPUT AT VAL "22",NOT PI;AT NOT PI,NOT PI; LINE h$ 6630 CLS : GO TO VAL "8500" 7000 IF b=SGN PI THEN GO TO VAL "7007" 7001 REM ON ERR GO TO inputcom 7003 RANDOMIZE USR 65200 7004 PRINT : GO SUB cr: LET p$="PAGING SYSOP........": GO SUB send: FOR x=SGN PI TO PI*PI: BEEP VAL ".1",SGN PI: NEXT x: GO SUB cr: 7005 FOR x=SGN PI TO VAL "128": IF INKEY$<>"" THEN GO TO VAL "7008" 7006 IF INKEY$="" THEN PRINT "-";: IF USR output THEN : OUT CODE "s",CODE ".": BEEP VAL ".1",PI*PI: NEXT x 7007 LET p$="The SYSOP is NOT AVAILABLE.....": GO SUB send: FOR x=SGN PI TO PI*PI: BEEP VAL ".1",SGN PI: NEXT x: GO SUB cr: GO TO menu 7008 GO SUB cr: LET p$="YOU ARE NOW IN CHAT MODE:": GO SUB send: FOR X=SGN PI TO PI*PI: BEEP VAL ".1",SGN PI: NEXT X: GO SUB cr 7009 CLS : PRINT "You are in chat with ";u$: PRINT : PRINT "SYMBL SHIFT/NOT TO ESCAPE..." 7010 IF CODE INKEY$=CODE "NOT " THEN GO TO inputcom 7011 POKE VAL "23692",CODE " COPY " 7020 LET rxrdy=NOT PI: LET txrdy=NOT PI 7100 LET a=USR VAL "65000": LET txrdy=SGN PI AND (a=SGN PI OR a=INT PI): LET rxrdy=SGN PI AND (a=VAL "2" OR a=INT PI) 7130 IF rxrdy THEN LET k=USR VAL "65100": PRINT CHR$ k;: IF k=VAL "13" THEN PRINT ">"; 7140 IF txrdy AND INKEY$<>"" THEN GO SUB VAL "7160" 7150 GO TO VAL "7010" 7160 IF txrdy THEN LET i$=INKEY$: PRINT i$;: OUT CODE "s",CODE i$: FOR x=SGN PI TO SQR EXP PI: NEXT x: IF CODE i$=VAL "13" THEN PRINT ">"; 7161 IF INKEY$<>"" THEN GO TO VAL "7161" 7162 RETURN 7500 DIM g$(2): LET u=SGN PI: GO SUB sendv 7515 ON ERR GO TO inputcom 7520 LET v$=CHR$ USR input: IF CODE v$>CODE "/" AND CODE v$<CODE ":" THEN PRINT v$; 7521 IF CODE v$=VAL "13" THEN GO TO VAL "7530" 7522 IF CODE v$<CODE STR$ TAN PI OR CODE v$>CODE "9" THEN GO TO VAL "7500" 7525 LET g$(u)=v$: IF u<INT PI THEN LET u=u+SGN PI 7530 IF CODE v$=VAL "13" OR u>VAL "2" THEN GO TO VAL "7550" 7540 GO TO VAL "7520" 7550 LET numin=VAL g$ 7560 IF numin<SGN PI OR numin>CODE "(" THEN LET numin=SGN PI 7570 RETURN 7600 LET f=NOT PI 7610 ON ERR GO TO quit 7630 GO SUB sendv: GO SUB inname: LET x$=y$: PRINT x$ 7640 IF x$=o$ THEN RETURN 7650 LET f=SGN PI: GO TO quit 8001 DIM y$(CODE " "): LET u=SGN PI: GO SUB sendv 8005 ON ERR GO TO quit: LET v$=CHR$ USR input: PRINT v$; 8010 LET y$(u)=v$ AND u<CODE " ": LET u=u+SGN PI 8011 IF CODE v$=VAL "13" THEN GO TO menu 8020 GO TO VAL "8005" 8100 FOR x=SGN PI TO LEN p$: POKE VAL "23692",CODE " COPY ": IF USR output THEN : OUT CODE "s",CODE p$(x): PRINT p$(x);: NEXT x: IF c$="c" OR c$="C" THEN RETURN 8105 FOR q=SGN PI TO LEN n$: POKE VAL "23692",CODE " COPY ": IF USR output THEN : OUT CODE "s",CODE n$(q): PRINT ; FLASH SGN PI;n$(q);: NEXT q 8106 RETURN 8150 PRINT : IF USR output THEN : OUT CODE "s",VAL "13": RETURN 8175 IF USR output THEN : OUT CODE "s",SQR EXP PI: RETURN 8200 CLS : PRINT " The CODE is";AT SQR PI,NOT PI;o$;AT VAL "4",NOT PI;" Is this OK? Y/N": INPUT a$: LET o=o+SGN PI 8210 IF a$="n" THEN PRINT '" INPUT CODE UP TO 32 CHARACTERS";: INPUT k$: IF a$="n" THEN LET o$=k$ 8500 BORDER PI: CLS 8501 IF o=SGN PI THEN LET s$="OFF": GO TO VAL "8510" 8502 LET o=NOT PI: LET s$="ON " 8505 IF b=SGN PI THEN LET b$="OFF": GO TO VAL "8510" 8508 LET b$="ON ": LET b=NOT PI 8510: PRINT AT NOT PI,VAL "12";"SYSOP MENU";AT SQR PI,NOT PI;"<R>EAD MESSAGES"," <P>ASSWORD ";s$;AT VAL "4",NOT PI;"<D>ELETE MESSAGES";AT VAL "6",NOT PI;"<L>EAVE MESSAGES";AT VAL "8",NOT PI;"<Q>UIT MENU"," <C>HAT IS ";b$;AT VAL "10",NOT PI;"<S>AVE MESSAGE BASE";AT VAL "12",NOT PI;"<N>EW LOGON BULLETIN";AT VAL "14",NOT PI;"<I>NPUT DAILY SPECIAL";AT VAL "16",NOT PI;"<E>NTER SYSTEMS DATA";AT VAL "18",NOT PI;"<V>IEW LOGON & SPECIAL" 8520 LET i$=INKEY$ 8521 IF I$="n" THEN GO TO VAL "6500" 8522 IF i$="q" THEN GO TO quit 8523 IF i$="i" THEN GO TO VAL "6600" 8524 IF i$="v" THEN GO TO VAL "8600" 8525 IF i$="" THEN GO TO VAL "8520" 8526 IF i$="s" THEN GO TO VAL "9999" 8527 IF i$="e" THEN GO TO VAL "8800" 8528 IF i$="p" THEN GO TO VAL "8200" 8529 IF i$="c" THEN LET b=b+SGN PI: GO TO VAL "8505" 8530 IF i$="r" THEN INPUT ;"MESSAGE #?: ";x: CLS : PRINT "MESSAGE # ";x: PRINT m$(x)(SGN PI TO CODE " ")'m$(x)(CODE "!" TO CODE "@")'m$(x)(CODE "A" TO ): PRINT "PRESS ENTER TO CONTINUE": PAUSE NOT PI: GO TO edit 8540 IF i$="d" THEN INPUT "message #?: ";x: PRINT "message # ";x;" deleted.": LET m$(x)=l$: LET m$(x,SGN PI TO VAL "28")="NO MESSAGE FOUND............": PAUSE NOT PI: GO TO edit 8550 IF i$="l" THEN LET y1=y1+SGN PI: CLS : PRINT "message # ";y1: PRINT : GO SUB VAL "8700": FOR x=SGN PI TO VAL "564": LET m$(y1,x)=w$(x): PRINT m$(y1,x); 8551 IF m$(y1,x)="@" THEN LET m$(y1,x)=CHR$ PI: LET x=VAL "600": PRINT "SAVED...": PAUSE CODE "<": GO TO VAL "8500" 8554 IF i$="l" THEN IF CODE INKEY$=CODE "NOT " THEN LET m$(y1,x)=CHR$ PI: GO TO edit 8560 IF i$="l" THEN NEXT x: PAUSE NOT PI: GO TO edit 8599 CLS : GO TO edit 8600 CLS : PRINT "LOGON"'t$: PAUSE NOT PI 8610 CLS : PRINT "DAILY"'h$: PAUSE NOT PI 8620 GO TO VAL "8500" 8700 INPUT AT VAL "22",NOT PI;AT SQR PI,NOT PI; LINE w$ 8710 RETURN 8800 INPUT AT VAL "22",NOT PI;AT NOT PI,NOT PI; LINE z$ 8810 GO TO VAL "8500" 9004 PAPER NOT PI: BORDER NOT PI: INK VAL "7": CLS 9005 CLEAR VAL "64999": GO SUB VAL "9500" 9006 LET c$="": LET u$="": LET z$="": LET f1=NOT PI: DIM y(SGN PI,SGN PI): LET y1=NOT PI: DIM l$(VAL "564"): DIM m$(CODE "(",VAL "564"): FOR x=SGN PI TO CODE "(": LET m$(x)="NO MESSAGES FOUND..."+CHR$ PI: NEXT x: FOR x=SGN PI TO PI: BEEP VAL ".1",EXP PI: NEXT x: PRINT '"Do you wish to LOAD a message base?": INPUT x$: IF x$="y" OR x$="Y" THEN PRINT '"Start MESSAGE BASE tape... (2 part LOAD...)": LOAD "" DATA m$(): LOAD "" DATA y(): LET y1=y(SGN PI,SGN PI) 9007 LET q$=" ": LET t$=" ROBERTS LABS. B.B.S. "+q$+q$: LET j$=" For PROFESSIONAL use only. ": FOR x=SGN PI TO PI: BEEP VAL ".1",EXP PI: NEXT x: PRINT '"Do You wish to load a logon bulletin?": INPUT x$: IF x$="y" THEN PRINT '"Start bulletin Tape...": LOAD "" DATA t$() 9008 PRINT '"<NOT> from most modes will exit to SYSOP mode.": PAUSE CODE "TAN " 9009 LET f=NOT PI: LET y=NOT PI: LET edit=VAL "8500": LET timer=VAL "9990": LET innum=VAL "7500": LET z$="\''" 9010 LET sendv=VAL "8175": LET scr=VAL "4620": LET cr=VAL "8150": LET chat=VAL "7000": LET menu=VAL "2006": LET warmstart=VAL "2000": LET logonbull=VAL "6000": LET statchk=VAL "65000": LET input=VAL "65100": LET output=VAL "65200": LET ansloop=VAL "1010": LET inputcom=VAL "2006": LET autoans=VAL "1000": LET read=VAL "3000": LET leave=VAL "4000": LET quit=VAL "5000" 9011 LET send=VAL "8100": LET inname=VAL "8000": LET incode=VAL "7600": LET h$="No new daily message": LET b$="ON ": LET w=NOT PI: LET s=w: LET b=w: LET o$=".": LET s$="ON": LET o=w 9012 PRINT '''" "; FLASH SGN PI;"Now going to autoans mode": PAUSE CODE "TAN ": CLS 9100 GO TO quit 9510 RESTORE VAL "9515": FOR x=VAL "65000" TO VAL "65008": READ x1: POKE x,x1: NEXT x 9515 DATA 175,219,119,230,3,79,6,0,201 9520 RESTORE VAL "9525": FOR x=VAL "65100" TO VAL "65132": READ x1: POKE x,x1: NEXT x 9525 DATA 219,119,230,128,200,175,219,119,230,2,40,244,219,115,6,0,79,219,119,230,128,200,175,219,119,230,1,40,244,121,211,115,201 9530 RESTORE VAL "9535": FOR x=VAL "65200" TO VAL "65212": READ x1: POKE x,x1: NEXT x 9535 DATA 219,119,230,128,200,175,219,119,230,1,40,244,201 9540 RETURN 9992 DIM x$(SQR EXP PI): LET time=INT ((PEEK VAL "23672"+VAL "256"*PEEK VAL "23673"+VAL "256"*VAL "256"*PEEK VAL "23674")/CODE "<"): LET hr=INT (time/CODE "<"/CODE "<"): LET min=INT ((time-(hr*CODE "<"*CODE "<"))/CODE "<"): PRINT AT VAL "21",EXP INT PI;"0" AND hr<VAL "10";hr;":";"0" AND min<VAL "10";min: FOR x=SGN PI TO SQR EXP PI: LET x$(x)=SCREEN$ (VAL "21",x+VAL "19"): NEXT x 9993 RETURN 9995 BORDER NOT PI: PAPER NOT PI: INK VAL "7": CLS 9996 GO TO PI*PI 9997 SAVE "rbbs" LINE VAL "9995" 9998 STOP 9999 SAVE "mbase" DATA m$(): LET y(SGN PI,SGN PI)=y1: SAVE "msctr" DATA y(): GO TO edit