BBS.BAS
Written somewhere in the late 80s by myself and Mike Pepe
This BBS was called "The Life Support System" and ran from my bedroom. It was really cool. :)
1 CLEAR500,&H7FFF:A$=INKEY$:LL=76:J9=0
2 FORX=0TO7:DATE$=DATE$+CHR$(PEEK(&H422+X)):NEXTX:FORX=1TO32:ST$=ST$+CHR$(PEEK(&H440+X)):IF
PEEK(&H440+X)<>13 THEN NEXTX ELSE X=33:NEXTX
3 FORX=0TO7:READA:PALETTEX,A:PALETTEX+8,A:NEXTX
4 DATA 0,36,18,54,11,40,27,63
5 A=PEEK(&H421):IF (A AND 32)=32 THEN BAUD=1200 ELSE BAUD=300
6 CLS1:CLS1:ATTR7,0:GOTO 45
7 '
8 'BBS EDITOR
9 IF LL=0 THEN LL=76
10 A=USR3(0):POKE&H50C,LL:POKE&H50F,0:X=0
11 PRINTCHR$(12);"Title: ";TT$:PRINTSTRING$(LL,"-"):A$="<$d3$>Color
<$d2$>Legends <$d6$>Editor <$d4$>Subsystem 4.3<$d7$>":GOSUB247:PRINT"Enter 24
lines of";LL;"column text.":PRINT"A . or / in column 1 will activate these
editor commands"
12 PRINT"A=abort D=delete E=edit L=list S=save R=read w/ SEC"
13 PRINT" ?=HELP":PRINTSTRING$(LL-3,"-");:PRINT">*"
14 X=PEEK(&H50F):IF X>=23 THEN 17 ELSE A=USR3(1):IF A=-1 THEN 347
15 IF A=1 THEN PRINT"OUT OF ROOM!":GOTO 16
16 ' Main-Line Editor Sub Commands
17 PRINT "(E> ";
18 A=USR(0):IFA=-1THEN347ELSEIF A=8 THEN PRINTSTRING$(4,8);:GOTO 14
19 IF A>96 THEN A=A-32:B$=CHR$(A)
20 B$=CHR$(A)
21 C=INSTR("ADELRS?",B$):ON C GOTO 23,28,32,37,38,39,43
22 PRINTCHR$(7);:GOTO 18
23 PRINT " Abort - Are you sure? (Y/N) ";
24 A=USR0(0):IFA=-1THEN347ELSEIF A>94 THEN A=A-32
25 C$=CHR$(A):IF C$="N" THEN PRINT STRING$(PEEK(&HFE02),8);:GOTO 14
26 IF C$<>"Y" THEN PRINTCHR$(7);:GOTO 24
27 PRINT" Yes":PRINT:PRINT"Message aborted!":PRINT:PRINT:CL=-1:CLOSE:GOTO97
28 PRINT " Delete a line-Which line to delete [X-Y]? (0=Abort)
";:POKE&H402,0:POKE&H403,0:A$=STRING$(10,0):
29 A=USR0(VARPTR(A$)):IFA=-1THEN347ELSEIF VAL(A$)<1 OR VAL(A$)>23 THEN PRINT"
None":PRINT:GOTO15ELSEIFINSTR(A$,"-")=0THENFD=VAL(A$):LD=FD:GOTO30ELSEGOSUB416
30 X=PEEK(&H50F):A=VAL(A$):A=FD:FORPC=1 TO (LD-FD)+1:FORZ=(A-1) TO
23:A$=STRING$(128,0):POKE&H500,3:POKE&H501,Z+1:Q=USR1(VARPTR(A$)):POKE&H501,Z:A$=A$+CHR$(0):Q=USR2(VARPTR(A$)):NEXTZ:X=X-1:NEXTPC:POKE
&H50F,X
31 PRINT:PRINT:IF FD<>LD THEN PRINT" Lines"FD"-"LD" deleted.":PRINT:GOTO14 ELSE
PRINT" Line "FD" deleted.":PRINT:GOTO14
32 PRINT " Edit a line- Which line to edit? (0=Abort)
";:POKE&H402,0:POKE&H403,0:A$=STRING$(4,0):A=USR0(VARPTR(A$)):IFA=-1THEN347ELSEIF
VAL(A$)<1 OR VAL(A$)>X THEN PRINT" None":GOTO14
33 L=VAL(A$):PRINT:PRINT"Old line- Enter a new line or press RETURN for no
change.":A$=STRING$(128,0):POKE&H500,3:POKE&H501,L-1:A=USR1(VARPTR(A$)):PRINTA$
34 PRINT:A$=STRING$(LL-1,0):B=USR0(VARPTR(A$)):IFB=-1THEN347ELSE IF LEN(A$)<1
THEN PRINT"No changes made- continue mssage.":PRINT:GOTO 14
35 Z=INSTR(A$,CHR$(13)):IF Z=0 THEN Z=LL
36 A$=A$+CHR$(0)+CHR$(0):A=USR2(VARPTR(A$)):PRINT:GOTO 14
37 PRINT" List the message.":PRINT:FORZ=0 TO PEEK(&H50F):PRINT Z+1;")
";:A$=STRING$(128,0):POKE&H500,3:POKE&H501,Z:A=USR1(VARPTR(A$)):PRINTA$:NEXTZ:PRINT:GOTO14
38 ZZ=X:PRINT" SEC read message.":PRINT:FORZ=0 TO
PEEK(&H50F):A$=STRING$(128,0):POKE&H500,3:POKE&H501,Z:A=USR1(VARPTR(A$)):GOSUB247:NEXTZ:X=ZZ:PRINT:GOTO14
39 PRINT" Save message- Do you want to save this? (Y/N) ";
40 A=USR0(0):IFA=-1THEN347ELSEA$=CHR$(A):IF A$="N" OR A$="n" THEN PRINT:GOTO15
41 IF A$<>"Y" AND A$<>"y" THEN 40
42 LA=PEEK(&H50F):RETURN
43 PRINT" Help (Command List)":PRINTSTRING$(LL-1,"=")
44 PRINT "A=abort D=delete E=edit L=list R=sec read S=save":PRINTSTRING$(LL,"="):PRINT:GOTO
14
45 '
46 'Main-Line Code
47 '
48 '
49 SYSOP$="Genius"
50 BA$(0)="Mail":BA$(1)="General":BA$(2)="Topic 'X'":BA$(3)="Federation
council":BA$(4)="Music":BA$(5)="Genius's Lab":BA$(6)="CoCo
Consultants":SD(0)=2:SD(1)=0:SD(2)=0:SD(3)=0:SD(4)=2:SD(5)=2:SD(6)=2
51 BN$(0)="MAIL":BN$(1)="GENERAL":BN$(2)="TOPIC X":BN$(3)="COUNCIL":BN$(4)="MUSIC":BN$(5)="LAB":BN$(6)="COMPUTER"
52 IF PEEK(&H420)<>0 THEN LOCATE 0,6:GOTO 75
53 POKE&H406,0:CLS1:ATTR 1,6:PRINT"Color Legends BBS 2.1":PRINT"(C) 1987 By Mike
Pepe and Jason Dessel - Radical Vision Systems, Inc.":PRINT"Special thanx to
Richard Tsao":PRINT:ATTR7,0
54 ATTR 4,1:LOCATE 30,10:PRINT"The Big Generator!!";:LOCATE 30,12:ATTR
3,0:PRINT"A Color Legends BBS":LOCATE 32,20:ATTR 6,0,U:PRINT"Waiting for
call";:ATTR7,0:LOCATE 0,22
55 X=PEEK(&HFF20)AND1
56 A$=INKEY$
57 IF A$="L" OR A$="l" THEN POKE&H406,0:POKE&H410,0:POKE&H420,1:RUN ELSE IF
A$="S" OR A$="s" THEN GOTO413 ELSE IF A$<>"" THEN POKE&H406,0:POKE&H410,0:GOTO
60
58 IF X=0 THEN 55
59 POKE&H410,1:POKE&H406,1
60 PRINTCHR$(12);CHR$(7):LOCATE0,0:ATTR4,3:PRINTTAB(40-11);"(* Carrier Detected
*)":PRINT:PRINT:PRINT:ATTR7,0:PRINT:FORX=1TO50:NEXTX61 PRINT "Connection
Established.":PRINT
62 PRINT:PRINT"Can your terminal display ANSI Color?
";:A=USR(0):IFA=-1THEN347ELSEA$=CHR$(A)
63 IF A$="Y" OR A$="y" THEN PRINT"Of Course!!!":POKE&H418,0:GOTO 66
64 IF A$="N" OR A$="n" THEN PRINT"Nope":ANSI=-1:POKE&H418,1:GOTO 66
65 GOTO 62
66 FORX=1TO600:NEXTX:POKE&H500,2:LA=2:PRINTCHR$(12);:GOSUB412
67 PRINT:A$="<$D7$>":GOSUB247:ON BRK GOTO 0
68 J9=J9+1:IF J9=4 THEN PRINT"Call back when you get your act together!!":GOTO
241ELSEPOKE&HFF40,0:PRINT:PRINTCHR$(7);:A$="<$d4$><$e0$>Enter your <$d6$>User
number,<$d4$> or NEW!<$d7$>":GOSUB247:PRINT
69 PRINT"Enter user number here!>
";:POKE&H402,1:POKE&H403,1:A$=STRING$(3,0):A=USR0(VARPTR(A$)):IFA=-1THEN347
70 IF A$="NEW" THEN 152
71 IF (VAL(A$)=0 AND A$<>"NEW") OR VAL(A$)<1 THEN PRINTCHR$(7):A$="<$d5$>Try
again!<$D7$>":GOSUB247:J9=J9+1:IF J9=4 THEN PRINT"Call back when you get your
act together!":GOTO241ELSEPRINT:GOTO69
72 UL=VAL(A$)
73 PRINT:A$="<$D2$>Enter your <$D3$>password.<$D7$>":GOSUB247:PRINT:PRINT"PW >
";:A$=STRING$(15,0):A=USR0(VARPTR(A$)):IFA=-1THEN347ELSEIF LEN(A$)<16 THEN A$=A$+STRING$(16-LEN(A$),32)
74 PL$=A$:PRINT:PRINT"*** Checking Password! ***"
75 IF PEEK(&H420)<>0 THEN UL=PEEK(&H420)
76 DRIVE0:OPEN"D",#1,"USERLOG/BBS:0",64:IF UL>LOF(1) THEN PRINT"INVALID!":FORX=1TO1000:NEXTX:CLOSE:GOTO
68
77 FIELD#1,16 AS NM$,16 AS PW$,5 AS LV$,5 AS CN$,5 AS TC$,8 AS LD$
78 GET#1,UL:IF PEEK(&H420)=0 AND PW$<>A$ THEN CLOSE:A$="<$E5$>Incorrect number
and/or password<$E0$>":CLOSE:FORX=1TO1000:NEXTX:GOTO68
79 UN=UL:OPEN"D",#2,"BBSTAT/BBS:0",32:FIELD#2,5 AS CL$,5 AS CT$,16 AS LC$:GET#2,1
80 CL=CVN(CL$):CT=CVN(CT$):IF PEEK(&H420)<>0 THEN CLOSE#2:GOTO 81 ELSE
CL=CL+1:CT=CT+1:LSET CT$=MKN$(CT):LSET CL$=MKN$(CL):LO$=LC$:LSET LC$=NM$:PUT#2,1:CLOSE#2
81 LAST$=LD$:NA$=NM$:LV=CVN(LV$):LO=CVN(CN$):POKE&H419,LO:TC=CVN(TC$):IF
PEEK(&H420)=0 THEN TC=TC+1:LSET TC$=MKN$(TC):LSET CN$=MKN$(CT):LSET CN$=MKN$(CL):LSET
LD$=DATE$:PUT #1,UL:CLOSE ELSE IF PEEK(&H420)<>0 THEN CLOSE:GOTO 86
82 PRINTCHR$(12);CHR$(13);"Dude! It's ";NA$:PRINT"Level ";LV:PRINT"Caller number
";CL;" - Last number ("LO")":PRINT:PRINT"The last caller was ";LO$:PRINT CT;"
Calls today.":PRINT"You have called here";TC;" times."
83 PRINT:PRINT "The SysOp is ";ST$:PRINT:PRINT"SysOp is ";:IF PEEK(&H440)=0 THEN
84 ELSE PRINT "not ";
84 PRINT"available for a chat.":PRINT
85 PRINT"Your last call was on ";LA$:PRINT"Today's date is ";DA$:PRINT:PRINT
86 XP=PEEK(&HFE03):P=PEEK(&H406):LOCATE 0,0:ATTR 5,6,B:POKE&H406,0:PRINT"Online
now:":ATTR 6,5:PRINTNA$;" Level";LV:PRINT"Caller";CL", "TC" Total Calls, Last
call date ";LAST$:PRINT:LOCATE 0,XP:ATTR 7,0:POKE&H406,P
87 IF PEEK(&H418)<>96 AND PEEK(&H419)<>96 THEN
ANSI=PEEK(&H418):LO=PEEK(&H419):BN=1:PRINT"Pulverize your RETURN
key!";:POKE&HFF40,0ELSEPRINT"Pulverize your RETURN key!";:POKE&HFF40,0
88 A=USR(0):IF A=-1 THEN 347 ELSE IF A<>13 THEN PRINTCHR$(7);:GOTO 88
89 PRINTCHR$(12);"Welcome to The Big Generator BBS, ";NA$;"!!!":PRINT:PRINT
90 IF PEEK(&H420)=0 THEN 93 ELSE LO=256*PEEK(&H40E)+PEEK(&H40F)
91 PRINT:PRINT"Returned to BBS main menu!":PRINT:PRINT:POKE &H420,0:GOTO 100
92 A=PEEK(&H422):POKE &H406,(A AND 32)
93 OPEN"D",#1,"BBSTAT/BBS:0",128:FIELD#1,128 AS A$:GET#1,2:GOSUB247::PRINT:CLOSE#1:POKE&HFF40,0
94 QQ$=STRING$(128,0):POKE&H500,2:POKE&H501,32:A=USR1(VARPTR(QQ$))
95 PRINT"Do you want to read the System News dated "QQ$"? ";
96 A=USR0(0):IF A=-1 THEN 346 ELSE A$=CHR$(A):IFA$="N" OR A$="n" THEN PRINT"NO!":GOTO99
ELSEIF A$="Y" OR A$="y" THEN 97 ELSE 96
97 PRINT "Yeah!":PRINT:A$="<$d6$>System News:<$d7$>":GOSUB247
98 POKE&H500,2:LA=32:GOSUB412
99 DRIVE0:IFOO=0 THEN GOTO 293
100 ANSI=PEEK(&H418)
101 ONERRGOTO386:DRIVE0:ONBRKGOTO0:CLOSE#1:OO=0:POKE&HFF40,0:IF (BN=0 AND LV<>7)
THEN BN=1
102 A=RND(PEEK(&H502))-1:A$=STRING$(128,0):POKE&H500,0:POKE&H501,A:A=USR1(VARPTR(A$)):GOSUB247:PRINT
103 A$="<$d7$>":GOSUB247:PRINT"[Main]["BA$(BN)"] Command >";
104 A=USR(0):IFA=-1THEN347ELSEIF A>97 THEN A$=CHR$(A-32) ELSE A$=CHR$(A)
105 IF A=4 THEN 331ELSE IF A=64 THEN K=PEEK(&H406):K=K+1:K=K AND
1:POKE&H406,K:K=PEEK(&H408):K=K+1:K=K AND 1:POKE &H408,K
106 IF A$="F" THEN A$="<$d1$>Feedback to sysops<$D7$>":GOSUB247:GOTO159
107 IF A$="?" THEN A$="<$D2$>Help with BBS commands<$D7$>":GOSUB247:GOTO166
108 IF A$="S" THEN A$="<$D3$>Send Email<$D7$>":GOSUB247:GOTO172
109 IF A$="=" THEN A$="<$D4$>Change sub-board<$D7$>":GOSUB247:GOTO183
110 IF A$="P" THEN A$="<$D5$>Post message<$D7$>":GOSUB247:GOTO199
111 IF A$="R" THEN A$="<$D6$>Read messages<$D7$>":GOSUB247:GOTO212
112 IF A$="G" THEN A$="<$d1$>Goodbye/Logoff/Hangup<$d7$>":GOSUB247:PRINT:GOTO
236
113 IF A$="W" THEN A$="<$d6$>Editor width change<$d7$>":GOSUB247:PRINT:GOTO388
114 IF A=19 THEN 239
115 IF A$="U" THEN A$="<$D2$>Userlist<$D7$>":GOSUB247:PRINT:GOSUB 275:GOTO 101
116 IF A$="T" THEN PRINT"Title scan of board";BN:GOTO284ELSEIFA$="+"THENPRINT"Read
System News":OO=1:GOTO94
117 IF A$="I" THEN A$="<$d2$>System
Info<$d7$>":GOSUB247:POKE&H500,3:LA=0:GOSUB412:GOTO101
118 IF A$="C" THEN A$="<$D3$>Chat with Genius!<$D7$>":GOSUB247:GOTO 327
119 IF A$="A" THEN A$="<$D4$>Change Auto-Message<$D7$>":GOSUB247:GOSUB242:GOTO
101
120 IF A$="*" THEN IF ANSI=0 THEN ANSI=1:PRINT"ANSI color
[off]":GOTO101:ELSEPRINT"ANSI color [on]":ANSI=0:GOTO101
121 IF A$="%" THEN A$="<$D5$>Enter system level...<$D7$>":GOSUB247:IFLV<5 THEN
PRINT"Access too low!":GOTO101ELSEFI$="SYSOP/MOD:2":GOTO 340
122 IF A$="X" THEN A$="<$D6$>X-Fer subs<$D7$>":GOSUB247:GOTO410
123 IF A$="H"THENA$="<$d3$>Help with SEC/ANSI
commands<$D7$>":GOSUB247:FORX=1TO600:NEXTX:PRINTCHR$(12):POKE&H500,3:LA=32:GOSUB412:GOTO101
124 IF A$="N" THEN PRINT"New message scan":GOTO 349
125 IF A$="Y" THEN PRINT"Your stats":GOTO 405
126 IF A$="O" THEN A$="<$D3$>Online Game [Galactic Conflict]<$D7$>":GOSUB247:
IFLV<2 THEN PRINT"Access too low!":GOTO101ELSEFI$="GALACTIC/ONL:1":GOTO340
127 PRINT:PRINT"Unrecognized command- enter a ? for a menu.":PRINT:GOTO101
128 'DOS
129 'SAVE
130 OPEN"D",#1,"BBSTAT/BBS",35:FIELD#1,5 AS B0$,5 AS B1$,5 AS B2$,5 AS B3$,5 AS
B4$,5 AS B5$,5 AS B6$:GET#1,2
131 ON BN GOTO 133,134,135,136,137,138
132 PN=CVN(B0$)+1:LSET B0$=MKN$(PN):GOTO 139
133 PN=CVN(B1$)+1:LSET B1$=MKN$(PN):GOTO 139
134 PN=CVN(B2$)+1:LSET B2$=MKN$(PN):GOTO 139
135 PN=CVN(B3$)+1:LSET B3$=MKN$(PN):GOTO 139
136 PN=CVN(B4$)+1:LSET B4$=MKN$(PN):GOTO 139
137 PN=CVN(B5$)+1:LSET B5$=MKN$(PN):GOTO 139
138 PN=CVN(B6$)+1:LSET B6$=MKN$(PN):GOTO 139
139 IF PN>16 THEN DRIVE SD(BN):KILL B$(BN)+"/ 1":FORQ5=2TO16:RENAME BN$(BN)+"/"+STR$(Q5)
TO BN$(BN)+"/"+STR$(Q5-1):NEXTX:CLOSE:PN=16:GOTO141
140 PUT#1,2:CLOSE#1
141 DRIVESD(BN):OPEN"O",#2,BN$(BN)+"/"+STR$(PN):PRINT#2,"From: ";MF$:PRINT#2,"
To: ";MT$:PRINT#2," Re: ";TT$:PRINT#2,"Date: ";DATE$;"-";CL:PRINT#2,CHR$(13):FORX=0TOLA:POKE&H500,3:POKE&H501,X:A$=STRING$(128,0):A=USR1(VARPTR(A$)):PRINT#2,A$:NEXTX:CLOSE
142 PRINT:PRINT"Message";PN;" saved.":RETURN
143 'LOAD
144 DRIVE SD(BN):OPEN"I",#1,BN$(BN)+"/"+STR$(MN):LI=0
145 IF EOF(1) THEN 149
146 LINEINPUT#1,A$
147 GOSUB 247
148 GOTO 145
149 CLOSE#1:RETURN
150 '
151 '
152 PRINTCHR$(12):LOCATE0,2:ATTR6,0,B:PRINT"New User Validation
Application";:ATTR7,0:LOCATE 0,5:PRINT:PRINT:POKE&H500,1:LN=32
153 POKE&H501,LN:LN=LN+1:A$=STRING$(128,0):A=USR1(VARPTR(A$)):IFLEN(A$)>2 THEN
GOSUB 247:GOTO 153
154 PRINT:PRINT:A$=STRING$(16,0):PRINT"Enter your handle (16 Char max)
>";:POKE&H402,0:POKE&H403,0:A=USR0(VARPTR(A$)):IFA=-1THEN347ELSEPRINT:PRINT A$;"
<= Is this correct?(Y/N) ";:A=USR0(0):IFA=-1THEN347ELSEB$=CHR$(A):IFB$="N"ORB$="n"
THENPRINT:GOTO154
155 PRINT:PRINT:PRINT"Enter your password (16 Chars max)
>";:POKE&H403,1:C$=STRING$(16,0):A=USR0(VARPTR(C$)):IFA=-1THEN347ELSEPRINT:PRINTC$;"
<= Is this correct? (Y/N) ";:A=USR(0):IFA=-1THEN347ELSEB$=CHR$(A):IFB$="N" OR
B$="n" THEN PRINT:GOTO155
156 PRINT:PRINT"Saving your account...":OPEN"D",#1,"USERLOG/BBS:0",64:FIELD#1,16
AS NM$,16 AS PW$,5 AS LV$,5 AS CN$,5 AS TC$,8 AS LD$:LSET NM$=A$:LSET PW$=C$:LSET
LV$=MKN$(0):LSET CN$=MKN$(0):LSET TC$=MKN$(0):LSET
LD$="00/00/00":L=LOF(1):PUT#1,L+1:CLOSE
157 PRINT:PRINTSTRING$(20,"="):PRINT"your user number is: ";L+1:PRINT"your
password is ";C$:PRINT:PRINT"Write it down, and then press RETURN to
continue.":A$=CHR$(0):A=USR0(VARPTR(A$)):IFA=-1THEN347
158 A$="<$d3$>Logon test. Get ready to type in your <$d1$>account number &
password<$d7$>":GOSUB247:PRINT:FORX=1TO1500:NEXTX:J9=0:LO=0:GOTO68
159 ' SEND FEEDBACK
160 PRINT:PRINT"Send Feedback to the Sysop? (y/n) ";:A=USR0(0):IFA=-1THEN347
161 A$=CHR$(A):IF A$="N" OR A$="n" THEN PRINT:PRINT:GOTO101
162 IF A$<>"Y" AND A$<>"y" THEN PRINTCHR$(7);:PRINT"No!!":GOTO162
163 TT$="Feedback":GOSUB8
164 IF LL=-1 THEN PRINT:PRINT"Message aborted! "CHR$(7):GOTO101
165 BN=0:MT$=SYSOP$+" - 1":MF$=NA$+" -"+STR$(UN):GOSUB 129:PRINT:PRINT:GOTO101
166 'MAIN MENU
167 POKE&H500,1:LN=0:FORX=1TO500:NEXTX:PRINTCHR$(12):PRINT
168 POKE&H501,LN:LN=LN+1:A$=STRING$(128,0):A=USR1(VARPTR(A$))
169 IF INSTR(A$,"@")=0 THEN GOSUB 247:GOTO 168
170 PRINT:PRINT:GOTO 101
171 GOTO 168
172 ' SEND EMAIL
173 IF LV<2 THEN PRINT:PRINTCHR$(7);"Sorry, validation required.":PRINT:GOTO101
174 BN=0:POKE&H402,0:POKE&H403,0:PRINT:PRINT:PRINT"Enter recipient user ID # or
enter a 0 to abort -> ";:A$=STRING$(2,0):A=USR0(VARPTR(A$)):IFA=-1THEN347ELSEPRINT
175 IF VAL(A$)=0 THEN PRINT:GOTO101
176 A=VAL(A$)
177 OPEN"D",#1,"USERLOG/BBS",64:FIELD #1,16 AS NM$,16 AS PW$,5 AS LV$,5 AS CN$,5
AS TC$:L=LOF(1):IF A<1 OR A>L THEN CLOSE:PRINT"Aborted!":GOTO101
178 GET#1,A:PRINT:PRINT"Send Email to ";NM$;" (Y/N)? ";:A$=CHR$(0)
179 B=USR0(0):IFA=-1THEN347ELSEB$=CHR$(B):IF B$<>"Y" AND B$="N" AND B$<>"y" AND
B$="n" THEN PRINTCHR$(7):GOTO 179
180 IF B$="N" OR B$="n" THEN CLOSE:PRINT"NO":PRINT:PRINT"Email
aborted!":PRINT:GOTO 101
181 MT$=NM$+" -"+STR$(A):CLOSE#1:MF$=NA$+" -"+STR$(UN):TT$="Email":GOSUB8:IFLL=-1
GOTO101
182 PRINT:GOSUB 129:PRINT:PRINT"Message saved! ":PRINT:GOTO101
183 ' CHANGE SUB BOARDS
184 PRINT:PRINT"Sub boards available for your use:":PRINT1,BA$(1)
185 IF LV>1 THEN PRINT2,BA$(2)
186 IF LV>2 THEN PRINT3,BA$(3):PRINT4,BA$(4):PRINT5,BA$(5)
187 IF LV>3 THEN PRINT6,BA$(6)
188 IF LV=7 THEN PRINT9,BA$(0)
189 PRINT:PRINT:PRINT"Enter new board number >
";:POKE&H402,0:POKE&H403,0:A$=STRING$(2,0):A=USR0(0):IFA=-1THEN347ELSEA=VAL(CHR$(A))
190 PRINTA$:IF LV=1 AND A>1 THEN A=0:GOTO 196
191 IF LV=2 AND A>2 THEN A=0:GOTO 196
192 IF LV=3 AND A>5 THEN A=0:GOTO 196
193 IF LV=7 AND A=9 THEN A=0:GOTO197
194 IF A<1 OR A>6 THEN A=0:GOTO196
195 GOTO197
196 PRINT CHR$(7)"Invalid Sub-Board #":PRINT:GOTO 101
197 BN=A:PRINT BA$(A);"- #"A
198 PRINT:GOTO101
199 ' POST MESSAGE
200 IF LV<2 THEN PRINT:PRINT"Sorry, validation required.":PRINT:GOTO101
201 PRINT
202 PRINT"Enter user's ID#, ALL, 0 to abort > ";:A$=STRING$(3,0):POKE
&H402,0:POKE&H403,1:A=USR0(VARPTR(A$)):A=VAL(A$):IF A=0 AND A$<>"ALL" THEN
PRINT:GOTO101
203 '
204 IF A$="ALL" THEN N$="All ":GOTO 207
205 OPEN"D",#1,"USERLOG/BBS",64:N=A:FIELD#1,16 AS NM$,16 AS PW$,5 AS LV$,5 AS CN$,5AS
TC$:IF A<1 OR A>LOF(1) THEN PRINT:PRINT"ERROR! Aborted!":PRINT:CLOSE:GOTO101
206 GET#1,A:N$=NM$:CLOSE
207 PRINT:PRINT"Send this to ";N$;" (Y/N)? ";:A=USR0(0):IFA=-1THEN347ELSEA$=CHR$(A)
208 IF A$="N" OR A$="n" THEN PRINT"No way!":PRINT:PRINT"Message
aborted":PRINT:GOTO 101
209 PRINT"Yeah, why not":PRINT:PRINT"Enter title of the message :
";:A$=STRING$(16,0):POKE&H402,0:POKE&H403,0:A=USR0(VARPTR(A$)):IFA=-1THEN347ELSETT$=A$:GOSUB
8:IF LL=-1 THEN 101
210 MT$=N$+" -"+STR$(N):MF$=NA$+" -"+STR$(UN)
211 PRINT:GOSUB129:GOTO101
212 'READ
213 DRIVE 0:OPEN"D",#1,"BBSTAT/BBS",35
214 FIELD#1,5 AS B0$,5 AS B1$,5 AS B2$,5 AS B3$,5 AS B4$,5 AS B5$,5 AS B6$:GET
#1,2:IFBN=0THENX=CVN(B0$)ELSEIFBN=1THENX=CVN(B1$)ELSEIFBN=2THENX=CVN(B2$)ELSEIF
BN=3THENX=CVN(B3$)ELSEIFBN=4THENX=CVN(B$)ELSEIFBN=5THENX=CVN(B5$)ELSEIFBN=6THENX=CVN(B6$)
215 X2=X:PRINT X2"message(s) exist on this sub!":PRINT:CLOSE:POKE&HFF40,0
216 PRINT:PRINT"["BA$(BN)"] Read which message? (x - y)
";:A$=STRING$(10,0):POKE&H402,0:POKE&H403,0:A=USR0(VARPTR(A$)):IFA=-1THEN347:IF
INSTR(A$,"-")=0 THEN SM=VAL(A$):SE=SM:GOTO221
217 IF INSTR(A$,"-") = 0 THEN SM=VAL(A$):GOTO 221
218 E=INSTR(A$,"-")
219 IF E=1 THEN SM=1:SE=16 :
220 SM=VAL(MID$(A$,1,E-1)):SE=VAL(MID$(A$,E+1)):IF SE=0 THEN SE=16
221 IF SM=0 THEN PRINT:GOTO 101 ELSE FORX0=SM TO SE:ON ERR GOTO 386
222 PRINT:PRINTCHR$(12);"Board ";BA$(BN);" Message ";X0;"of"X2"Total"
223 FI$=BN$(BN)+"/"+STR$(X0)
224 DRIVE SD(BN)
225 CLOSE:OPEN"I",#1,FI$
226 IF NOT(EOF(1)) THEN LINEINPUT#1,A$:GOSUB247:GOTO226
227 CLOSE
228 A$="<$d7$>":GOSUB247:POKE&HFF40,0:PRINT:PRINT"[A]gain [R]eply [Q]uit [RETURN
for next] ";
229 A=USR0(0):IF A=-1 THEN 347
230 IF A$="Q" OR A$="q" THEN PRINT:PRINT"Message read aborted":CLOSE:GOTO100
231 A$=CHR$(A):IF A$="R" OR A$="r" THEN
Q0=X0:Q1=X1:X0=BN:X1=X0:GOSUB383:X0=Q0:X1=Q1:GOTO 234
232 IF A$="A" OR A$="a" THEN 222
233 IF A<>13 THEN A=USR(0):IF A=-1 THEN 347ELSE A$=CHR$(A):GOTO 230
234 NEXTX0
235 PRINT:PRINT:ONERRGOTO386:GOTO 101
236 ' LOGOFF
237 PRINT:PRINT"Are you sure you want to leave?
";:A=USR0(0):IFA=-1THEN347ELSEA$=CHR$(A)
238 IF A$<>"Y" AND A$<>"y" THEN PRINT"NO WAY!":PRINT:GOTO101
239 PRINT"YES!":PRINTCHR$(12):A$="<$d3$>Thanx for calling <$d1$>The Big
Generator!!":GOSUB 247:A$=" <$d1$>B<$d3$>C<$d2$>N<$d4$>U<$d5$>L<$d6$>8<$d7$>R
!!":GOSUB247:PRINT:A$="<$d2$>Now hold on while I <$d6$>unplug<$d2$> this damn
thing!<$d7$>":GOSUB247
240 ' hangup routine here
241 FORX=1TO1700:NEXTX:PRINT"+++";:FORX=1TO2000:NEXTX:PRINT"ATH":RUN
242 IFLV<2 THEN PRINT"Sorry, your access is too
low!":GOTO101ELSEA$="<$D6$>Present
<$d2$>Auto-Message:<$d7$>":GOSUB247:OPEN"D",#1,"BBSTAT/BBS:0",128:FIELD#1,128 AS
B$:GET#1,2:A$=B$+"<$d7$>":GOSUB247:CLOSE#1:PRINT:PRINT"Do you want to change
this? ";
243 A=USR0(0):A$=CHR$(A):IFA$="N" OR A$="n" THEN PRINT"No, not really!":GOTO 101
ELSE IF A$="Y" OR A$="y" THEN PRINT"Sure!!":GOTO 245
244 POKE&HFF40,0:GOTO243
245 PRINT:A$="<$d3$>Enter your <$d2$>message<$d3$>, 80 chars
maximum!<$d7$>":GOSUB247:A$=STRING$(80,0)
246 POKE&H402,0:POKE&H403,0:A=USR0(VARPTR(A$)):IFA=-1THEN347ELSEC$="Auto-Message
from "+NA$+CHR$(13)+CHR$(13)+A$:OPEN"D",#1,"BBSTAT/BBS:0",128:FIELD#1,128 AS
B$:LSET B$=C$:PUT#1,2:CLOSE#1:PRINT:PRINT:RETURN
247 ' SEC
248 P=INSTR(A$,"<$"):IF P=0 THEN PRINTA$:RETURN
249 IF P>1 THEN PRINTMID$(A$,1,P-1);
250 CM$=MID$(A$,P+2,1):AG$=MID$(A$,P+3,1)
251 QQ=INSTR("ABCDEFabcdef",CM$):ON QQ GOSUB
253,257,260,263,267,271,253,257,260,263,267,271
252 IF QQ=0 THEN PRINT"<-ILLEGAL SEC COMMAND->":PRINTCHR$(7):RETURN ELSE GOTO
248
253 'A
254 E=INSTR(A$,"$>"):IF E=0 THEN PRINTA$:RETURN
255 TX$=MID$(A$,P+3,E-2):FORR=1TOVAL(AG$):FORX=1TOLEN(TX$)-2:PRINTMID$(TX$,X,1);:PRINTCHR$(8);:NEXTX,R:A$=MID$(A$,E+2,80):RETURN
256 ' SPACES FORWARD & BACK, BUILD TEXT ONE LETTER AT A TIME
257 E=INSTR(A$,"$>"):IF E=0 THEN RETURN
258 IF VAL(AG$)<2 THEN AG$="2"
259 AG=VAL(AG$):TX$=MID$(A$,P+4,(E-P)-2):FORX=1TOLEN(TX$)-2:PRINTMID$(TX$,X,1);:PRINTSTRING$(AG,32);:PRINTSTRING$(AG,8);:NEXTX:A$=MID$(A$,E+2,80):RETURN
260 'C
261 E=INSTR(A$,"$>"):IF E=0 THEN RETURN
262 TX$=MID$(A$,P+4,(E-P)-2):FORX=1TOLEN(TX$)-2:PRINTMID$(TX$,X,1);:FORD=1TOVAL(AG$)*29:NEXTD,X:A$=MID$(A$,E+2,80):RETURN
263 'D
264 E=INSTR(A$,"$>"):A$=MID$(A$,E+2,80)
265 E=PEEK(&HFE0B):AG=VAL(AG$) AND 7:ATTR AG,E
266 IF ANSI THEN RETURN ELSE PRINT #-2,CHR$(27);"[3";AG$;"m";:RETURN
267 'E
268 E=INSTR(A$,"$>"):A$=MID$(A$,E+2,80)
269 E=PEEK(&HFE0A):AG=VAL(AG$) AND 7:ATTR E,AG
270 IF ANSI THEN RETURN ELSE PRINT #-2,CHR$(27);"[4";AG$;"m";:RETURN
271 'F
272 E=INSTR(A$,"$>"):A$=MID$(A$,E+2,80)
273 ATTR 7,0
274 IF ANSI THEN RETURN ELSE PRINT #-2,CHR$(27);"[37m ";CHR$(27);"[40m":RETURN
275 ' USERLIST
276 PRINT:PRINT"ID# Name Level Calls Last Call ";:IF LV>5 THEN PRINT"Password"
ELSE PRINT
277 PRINTSTRING$(80,"-")
278 X=0:OPEN"D",#1,"USERLOG/BBS:0",64:FIELD#1,16 AS NM$, 16 AS PW$, 5 AS LV$, 5
AS CN$,5 AS TC$,8 AS A$:FORX=1TOLOF(1):GET#1,X:PRINTX" "NM$" "CVN(LV$)" "CVN(TC$)"
"A$;
279 IF LV=7 THEN PRINT" ";PW$
280 IF LV=6 AND CVN(LV$)>5 THEN PRINT" ===CLASSIFIED===" ELSE IF LV=6 AND CVN(LV$)<6
THEN PRINT " ";PW$
281 IF LV<6 THEN PRINT
282 NEXTX
283 CLOSE#1:PRINT:PRINTSTRING$(79,"-"):PRINT:RETURN
284 'TITLE SCAN
285 PRINT:PRINT"# From To Re"
286 FORX=1 TO 17
287 ON ERR GOTO 292
288 DRIVE SD(BN):OPEN"I",#1,BN$(BN)+"/"+STR$(X):LINEINPUT#1,B$:A$=STR$(X)+MID$(B$,6,20):LINEINPUT#1,B$:A$=A$+MID$(B$,6,20):LINEINPUT#1,B$:A$=A$+MID$(B$,6,17)
289 CLOSE#1
290 GOSUB247
291 NEXTX
292 CLOSE#1:ON ERR GOTO 386:PRINT:PRINT:GOTO101
293 PRINT:A$="<$D6$>Checking for <$d2$>Email.<$d7$>":GOSUB247
294 FORXP=1TO17:ON ERR GOTO 305
295 CLOSE:DRIVE SD(BN):OPEN"I",#1,BN$(0)+"/"+STR$(XP):LINEINPUT#1,B$:LINEINPUT#1,B$
296 X0=INSTR(B$,"-"):IF VAL(MID$(B$,X0+1,8))=UN THEN EM=1:CLOSE #1:BN=0:MN=XP:PRINT"you
have mail":PRINT:GOSUB 143:PRINT
297 IF EM=0 THEN NEXTXP
298 A$="<$d7$>":GOSUB247:PRINT"[A]gain [R]eply <Return> Next
";:A=USR(0):IFA=-1THEN347
299 IF A>96 THEN A=A-32:A$=CHR$(A) ELSE A$=CHR$(A)
300 IF A$="A" THEN 296
301 IF A$="R" THEN 307
302 IF A$<>CHR$(13) THEN PRINTCHR$(7):GOTO 298
303 IF EM=1 THEN PRINT"Deleting this message- ":MN=XP:GOSUB311
304 CLOSE #1:PRINT".";:XP=1:NEXTXP
305 IF EM=0 THEN PRINT:A$="<$d3$>Sorry, <$d1$>No <$d6$>Email <$d3$>for
you..<$d7$>":GOSUB247:PRINT:ONERRGOTO386:GOTO100
306 ON ERR GOTO 386:GOTO 100
307 'E- REPLY
308 TT$="Email reply.":GOSUB8:IFLL=-1 THEN 303
309 OPEN"I",#1,BN$(0)+"/"+STR$(MN):LINEINPUT#1,B$(0):LINEINPUT#1,B$(1):CLOSE#1:KILLBN$(0)+"/"+STR$(MN):OPEN"O",#1,BN$(0)+"/"+STR$(MN)
310 MF$=MID$(B$(0),7,20):MT$=MID$(B$(1),7,20):TT$="email reply":GOSUB 129
311 'DELETE
312 DRIVE SD(BN):KILL BN$(BN)+"/"+STR$(MN)
313 CLOSE:OPEN"D",#1,"BBSTAT/BBS:0",35:FIELD#1,5 AS B0$,5 AS B1$,5 AS B2$,5 AS
B3$,5 AS B4$,5 AS B5$,5 AS B6$:GET#1,2
314 ON BN GOTO 316,317,318,319,320,321
315 HM=CVN(B0$):LSET B0$=MKN$(HM-1):GOTO322
316 HM=CVN(B1$):LSET B1$=MKN$(HM-1):GOTO322
317 HM=CVN(B2$):LSET B2$=MKN$(HM-1):GOTO322
318 HM=CVN(B3$):LSET B3$=MKN$(HM-1):GOTO322
319 HM=CVN(B4$):LSET B4$=MKN$(HM-1):GOTO322
320 HM=CVN(B5$):LSET B5$=MKN$(HM-1):GOTO322
321 HM=CVN(B6$):LSET B6$=MKN$(HM-1):GOTO322
322 DRIVE 0
323 PUT #1,2:CLOSE #1
324 IF HM=1 THEN RETURN
325 DRIVE SD(BN):FORXO=MN TO HM-1:RENAME BN$(BN)+"/"+STR$(XO+1) TO BN$(BN)+"/"+STR$(XO):NEXTXO
326 CLOSE:RETURN
327 'CHAT
328 A$=INKEY$:IF PEEK(&H440)<>0 THEN PRINT:PRINT"Sorry, SysOp is not available
for a chat":PRINT"Leave feedback if it's important":PRINT:PRINT:GOTO101
329 PRINT:A$="<$d3$>SCREAMIN' <$d2$>for <$d6$>Genius!!<$d7$>":GOSUB247
330 FORX0=0TO10:PRINTCHR$(7);".";:PLAY"T40CDE":FORX1=1TO400:IF INKEY$="" THEN
NEXTX1,X0:PRINT" Sorry, I can't seem to find him... try again l8r or leave
feedback!!":GOTO100
331 PRINTCHR$(12):A$="--* <$d6$>POOF!!<$d7$> <$d2$>"+SY$+"<$d3$> is here for a
<$d7$>CHAT!":GOSUB247
332 A=USR(0):IFA=-1THEN347ELSEIF A=3 THENPRINTCHR$(12);"Returning you to main
menu":PRINT:GOTO101
333 IF A=189 THEN 335
334 PRINTCHR$(A);:GOTO 332
335 ZZ=LV:LV=7:PRINT:A$="<$d3$>SysOp is <$d6$>online.<$d7$> Please
standby...":GOSUB247:POKE&H406,0:GOSUB
336:POKE&H406,1:POKE&H408,1:PRINT:A$="<$d3$>-* POOF *-<$d2$> The SysOp has
re-appeared!<$d7$>":GOSUB247:LV=ZZ:GOTO 332
336 PRINT:PRINT:PRINT"Enter new temprorary access ";:A=USR(0)
337 A$=CHR$(A):PRINTA$
338 IF A$<"0" OR A$>"7" THEN 336
339 LV=VAL(A$):ZZ=VAL(A$):RETURN
340 'RUN FI$
341 POKE &H420,UN ' SAVE USER NUMBER IN $420
342 A=0:IF NOT(ANSI) THEN A=A+128
343 IF PEEK(&H406)<>0 THEN A=A+32
344 IF BAUD=1200 THEN A=A+64
345 POKE &H421,A+LV:POKE&H40E,INT(LO/256):POKE&H40F,(LO AND 255):IF ANSI THEN
POKE &H418,1 ELSE POKE &H418,0
346 LOAD FI$,R
347 'CD DROP
348 POKE&H420,0:POKE&H421,0:CLS:ATTR0,7,B:PRINT"Loss of
carrier!":ATTR7,0:PRINTCHR$(8);:UNLOAD:CLEAR:MOTOROFF:PRINT"+++";:FORX=1TO2000:NEXTX:PRINT"ATH":RUN
349 ' NEW MESSAGE SCAN
350 PRINT:PRINT"Do you want a [G]lobal or [R]egular scan ? ";
351 A=USR(0):IFA=-1THEN RUN ELSEA$=CHR$(A)
352 IF A$="G" OR A$="g" THEN TY=1:PRINT"Global":GOTO 355
353 IF A$="R" OR A$="r" THEN TY=0:PRINT"Regular":GOTO 355
354 PRINTCHR$(7);:GOTO 351
355 IF TY=0 THEN SS=BN:SE=BN:GOTO 358
356 SS=1
357 IF LV=0 THEN SE=1 ELSE IF LV=1 THEN SE=1 ELSE IF LV=2 THEN SE=3 ELSE IF LV=3
THEN SE=5 ELSE IF LV=4 THEN SE=6 ELSE SE=6
358 FOR X0=SS TO SE
359 PRINT:PRINT"Checking board ";X0; ".";
360 CLOSE:OPEN"D",#1,"BBSTAT/BBS:0",35:FIELD #1,5 AS B0$,5 AS B1$,5 AS B2$,5 AS
B3$,5 AS B4$, 5 AS B5$,5 AS B6$:GET #1,2:ON X0 GOTO 361,362,363,364,365,366
361 HP=CVN(B1$):GOTO 368
362 HP=CVN(B2$):GOTO 368
363 HP=CVN(B3$):GOTO 368
364 HP=CVN(B4$):GOTO 368
365 HP=CVN(B5$):GOTO 368
366 HP=CVN(B6$):GOTO 368
367 PRINT:PRINT"New message scan complete":GOTO 101
368 ON ERR GOTO 386:CLOSE:IF HP=0 THEN 371 ELSE FOR X1=1 TO HP:PRINT".";:DRIVE
SD(X0):CLOSE:OPEN"I",#1,BN$(X0)+"/"+STR$(X1):FORZZ=1 TO
4:LINEINPUT#1,B$:NEXTZZ:E=INSTR(B$,"-"):PO=VAL(MID$(B$,E+1,5))
369 IF PO>LO THEN PRINT:PRINT"BOARD";X0;" HAS NEW MESSAGE(S)":GOTO 373
370 NEXT X1
371 NEXT X0
372 PRINT:PRINT:PRINT"Newscan completed":PRINT:PRINT:ON ERR GOTO 386:GOTO 101
373 'NEWSCAN
374 PRINT:PRINT"Board ";X0;" New message #";X1
375 FI$=BN$(X0)+"/"+STR$(X1):GOSUB402
376 A$="<$d7$>":GOSUB247:POKE&HFF40,0:PRINT"[A]gain [R]eply [Q]uit [RETURN for
next] ";
377 A=USR(0):IF A=-1 THEN RUN
378 IF A=13 THEN 370
379 IF CHR$(A)="R" OR CHR$(A)="r" THEN PRINTCHR$(A):GOSUB 383:GOTO 370
380 IF CHR$(A)="A" OR CHR$(A)="a" THEN PRINTCHR$(A):X1=X1-1:GOTO 370
381 IF CHR$(A)="Q" OR CHR$(A)="q" THEN PRINT:PRINT"Newscan aborted!":PRINT:GOTO
101
382 GOTO 377
383 'REPLY
384 OPEN"I",#1,BN$(BN)+"/"+STR$(Q0):LINEINPUT#1,B$:MT$=MID$(B$,7):LINEINPUT#1,B$:LINEINPUT#1,B$:TT$=MID$(B$,7):CLOSE:MF$=NA$+"
- "+STR$(UN):GOSUB 7:IF CL=-1 THEN RETURN
385 GOSUB 128:RETURN
386 'ERROR
387 IF ERNO=26 THEN GOTO 101 ELSE UNLOAD:PRINT:PRINT:PRINT"Error ";ERNO;"in";ERLIN:PRINT"Please
inform the sysop!!!":GOTO 101
388 'WIDTH
389 PRINT:PRINT"Width change (80,40,32)-enter 8,4,3: ";
390 A=USR0(0):A$=CHR$(A):IFA$="8"THENLL=79:PRINT"80
columns":GOTO101ELSEIFA$="4"THENLL=39:PRINT"40
columns":GOTO101ELSEIFA$="3"THENLL=31:PRINT"32 columns":GOTO101
391 'TF READ
392 ONBRKGOTO101:PRINTCHR$(12);:Z1=0:Z2=0
393 OPEN"I",#1,FI$
394 IF Z2=1 THEN 400 ELSE Z1=Z1+1:IF Z1<23 THEN 400
395 PRINT "([C]ont [A]bort [N]onstop)";:P=PEEK(&HFE02)
396 A=USR(0):A=A AND 223:IFA=65THEN401
397 IF A=67 THEN Z1=0:PRINTSTRING$(P,8);:GOTO 400
398 IF A=78 THEN PRINTSTRING$(P,8);:Z2=1:GOTO 400
399 PRINTCHR$(7);:GOTO 396
400 IF NOT(EOF(1)) THEN LINEINPUT#1,A$:IFA$="@"THENCLOSE:RETURNELSEGOSUB247:GOTO394
401 CLOSE:RETURN
402 DRIVE SD(X0):CLOSE:OPEN"I",#1,FI$
403 IF NOT(EOF(1)) THEN LINEINPUT#1,A$:GOSUB 247:GOTO 403
404 CLOSE:RETURN
405 ' YOUR STATS
406 PRINT:PRINT"Your stats:":PRINT:OPEN"D",#1,"USERLOG/BBS",64:FIELD #1,16 AS
NM$,16 AS PW$,5 AS LV$,5 AS CN$,5 AS TC$,8 AS LD$
407 GET #1,UN:PRINT:PRINT"Name ";NM$:PRINT"Access level ";CVN(LV$):PRINT"Caller
number ";CL:PRINT"Last call ";LO:PRINT"Total calls ";CVN(TC$):PRINT"Last call
date ";LD$
408 CLOSE
409 PRINT:PRINT:GOTO 101
410 ' XFER SUB
411 PRINT:PRINT:PRINT"due to limited space, this command is not supported right
now.":PRINT:PRINT:GOTO 102
412 POKE&H501,LA:A$=STRING$(128,0):A=USR1(VARPTR(A$)):LA=LA+1:IFA$="@"THENRETURN
ELSE GOSUB247:GOTO412
413 CLS:PRINT"Enter new sysop status":PRINT:LINEINPUTA$:A$=A$+CHR$(13):FORX=1TOLEN(A$):POKE&H440+X,ASC(MID$(A$,X,1)):NEXTX
414 PRINT:PRINT"Is SysOp available for chat? ";
415 A$=INKEY$:IF A$="" THEN 415 ELSE IF A$="Y" OR A$="y" THEN POKE&H440,0 ELSE
POKE&H440,1:RUN
416 ' Delete post loop set
417 PRINT:PRINT"Working":E=INSTR(A$,"-")
418 IF E=1THENFD=1:LD=24
419 FD=VAL(MID$(A$,1,E-1)):LD=VAL(MID$(A$,E+1)):IFLD=0 THENLD=24
420 IF LD>X THEN LD=X
421 RETURN