2QN3GLOP@UKANVAX.BITNET (05/22/87)
This is a small BBS program for the Apple II computer. I have
had some help on it to get it to answer the phone from basic.
I think it works okay now. Would someone please download it
and EXEC it into memory by typing ]EXEC MINIBOARD
There is a problem though, when you are asked for a I.D.
number the computer locks up. I think there is a small simple
basic error in one of the lines between 50 and 110.
If you know basic it should be easy to figure out.
I think. If anyone figures out why it (appears) to
lock up please write back.
2QN3GLOP@UKANVAX.BITNET
CUT HERE-----------------------------------------------------+
RUN
TEXT:SPEED=100
10 CLEAR 8000
12 DIM N$(50),P$(50),FM$(50),TM$(50),MS$(50),T$(50,5)
14 DIM ML(50),MC(50)
20 PRINT :PRINT"********* Mini-Board 1.0 ***********"
30 PRINT"Waiting for Caller." : REM
32 PRINT "PR#2" :REM Put ctrl-D between first quote and P
34 PRINT "IN#2" : REM PUT ctrl-D between first quote and I
36 INPUT A$ :IF A$ <> "CONNECT" THEN GOTO 36
40 PRINT:PRINT"Incoming call.":PRINT
42 FOR I=1 TO 500:NEXTI :REM
44 PRINT"Welcome to the Mini-Board."
46 PRINT"Supported by "
48 PRINT"Michael Edward Holman." : GOTO 100
50 A$=""
60 Y$=INKEY$:IFY$=""THENGOTO60
62 IFY$=CHR$(13)THEN PRINT: RETURN
64 IFY$=CHR$(8)AND LEN(A$)=1 THENPRINTY$;:GOTO50
66 IFY$=CHR$(8)AND LEN(A$)>1THENPRINTY$;:L=LEN(A$): A$=LEFT$(A$,L-1):GOTO60
68 IFY$<" "ORY$>"z"THENGOTO60
69 PRINTY$;:A$=A$+Y$:IFLEN(A$)>LN THEN RETURN
70 GOTO 60
100 PRINT:PRINT"Enter your I.D. number" : PRINT"Enter 'N' for New caller"
110 PRINT"===> ";:LN=5:GOSUB50:IFA$=""ORA$="N"THEN200
120 IFVAL(A$)<10000 OR VAL(A$)>30000 THEN PRINT"Input error.":GOTO100
130 ID=VAL(A$)-10000:PRINT
140 PRINT"Enter password: ";:LN=8:GOSUB50
145 IFA$=""THENGOTO200
150 IFA$=""ORA$<>P$(ID)THENPRINT"Incorrect! Access DENIED.": GOTO200
160 PRINT"Welcome back ";N$(ID):PRINT
170 PRINT"Welcome to Mini-Board."
172 IF ID>1 THENGOTO180:
174 PRINT"SYSOP on-line. Hello ";N$(ID):PRINT
176 PRINT"Activate SYSOP Menu? ";:LN=1:GOSUB50
177 IFA$="N" OR A$="n"THEN GOTO 180
178 IFA$<>"Y" AND A$<>"y" THENGOTO176
179 GOTO 8000 :
180 GOTO 350
200 PRINT"Logged on as New caller. Standby."
210 TC=TC+1:P$(TC)="":N$(TC)="":ID=TC
220 PRINT"Enter your first name : ";:LN=15:GOSUB50
230 IFA$=""THEN A$="NONAME"
240 N$(ID)=A$
250 PRINT:PRINT"Enter a passowrd (8 letters or less)"
260 PRINT"=====>> ";:LN=8:GOSUB50: IF A$=""THENA$="PASSWORD"
270 P$(ID)=A$
280 PRINT:PRINT"Logged in as ";N$(ID):PRINT"Password : ";P$(ID)
290 PRINT"Correct?";:LN=1:GOSUB50
300 IFA$="N"ORA$="n"THEN PRINT:GOTO 220
310 IFA$="N"ORA$="n"THEN GOTO 220
320 PRINT:PRINT"Accepted. Your **Secret** logon"
330 PRINT"number is ";ID+10000
340 PRINT"Write this number down and use it whenever":PRINT"you logon to Mini=
board."
345 PRINT:PRINT"Press RETURN or ENTER to see":PRINT"list of options."
350 PRINT:PRINT"Main Options (B,C,E,K,T,V,)"
360 PRINT"=-=> ";:GOSUB50
370 IFA$="T"ORA$="t"THEN GOTO 9000
380 IFA$="C"ORA$="C"THEN GOTO 7000
390 IFA$="V"ORA$="v"THEN GOTO 5000
400 IFA$="E"ORA$="e"THEN GOTO 3000
410 IFA$="B"ORA$="b"THEN GOTO 1000
420 IFA$="K"ORA$="k"THEN GOTO 4000
500 PRINT : PRINT"Command Options :"
510 PRINT" B - Bulletin section"
520 PRINT" C - Chat with SYSOP"
530 PRINT" E - Enter a message"
540 PRINT" K - Kill a message"
550 PRINT" T - Terminate your call"
560 PRINT" V - View present messages"
570 GOTO 350
1000 PRINT:PRINT"Bulletin sectioon.":PRINT
1010 PRINT"Updated : ";PD$: REM Date file was updated
1020 PRINT
1030 PRINT" This is a short bulletin to welcome"
1040 PRINT"you to the new Mini-Board system."
1100 PRINT:PRINT"End of file.":GOTO 350
3000 PRINT:PRINT"Message Entry Section":PRINT
3010 PRINT"Current high message number is";HM
3020 M5=HM+1: IFM<50 THEN GOTO 3030
3022 FORI=1 TO 50 : IF MC(I)=0 THEN GOTO3025
3024 NEXT I:PRINT"Message file is full.":GOTO350
3025 M5=1
3030 PRINT"Enter msg subject :";:LN=20:GOSUB50
3040 IFA$=""THENPRINT"Msg aborted.":GOTO350
3050 MS$(M5)=A$
3060 PRINT "Enter your last name : ";:LN=15:GOSUB50
3070 IFA$=""THENGOTO3040
3080 FM$(M5)=N$(ID)+" "+A$
3090 PRINT"Enter the full name of"
3100 PRINT"the person you are sending"
3110 PRINT"the message to : ";:LN=15:GOSUB50
3120 IFA$=""THENGOTO3040
3130 TM$(M5)=A$: PRINT
3140 PRINT"From : ";FM$(M5)
3150 PRINT"Sent to : ";TM$(M5)
3160 PRINT"Subject : ";MS$(M5):PRINT
3170 PRINT"Correct? ";:LN=1:GOSUB50
3180 IFA$="N" OR A$="n"THEN GOTO 3030
3190 IFA$<>"Y" AND A$<>"y"THEN GOTO3170
3200 MX=1:T$(M5,MX)=""
3210 PRINT"Enter text. You have a maximum"
3220 PRINT"of 5 lines at 64 characters per"
3230 PRINT"line. Press RETURN alone when done."
3240 PRINT:PRINT"Line. ";MX
3250 PRINT">";:LN=64:GOSUB50:IFA$=""THEN3280
3260 T$(M5,MX)=A$:MX=MX+1:IFMX=6 THEN GOTO3080
3270 GOTO 3240
3280 MX=MX-1
3290 IF MX=0 THEN PRINT"Aborted.":GOTO350
3300 PRINT:PRINT"Listing...."
3310 FOR I=1 TO MX : PRINT T$(M5,I) : NEXT I
3320 PRINT : PRINT"Save message? ";:LN=1:GOSUB50
3330 IFA$="N" OR A$="n"THEN PRINT"ABORTED.":GOTO 350
3340 IFA$<>"Y" AND A$<>"y" THEN GOTO 3320
3350 PRINT:PRINT"Message saved.":ML(M5)=MX
3360 IFM5>HM THEN HM=M5
3370 MC(M5)=1:GOTO 350
4000 PRINT : PRINT"Message Kill Section":PRINT
4005 IF HM=0 THEN GOTO 5005
4010 PRINT"Current high message is ";HM
4020 PRINT"Enter msg to kill or"
4030 PRINT"RETURN to abort -> ";:LN=1:GOSUB50
4040 IFA$=""ORVAL(A$)=0 THEN GOTO350
4050 MK=VAL(A$)
4060 IFMK <0 OR MK > HM THENPRINT"Incorrect entry":GOTO4020
4070 IF MC(MK)=0 THENPRINT"No such msg in file.":GOTO4010
4080 PRINT:PRINT"Msg ";MK
4090 PRINT"From : ";FM$(MK)
4100 PRINT"Sent to : ";TM$(MK)
4110 PRINT"Subject : ";MS$(MK)
4120 PRINT:PRINT"Correct msg? ";;:LN=1:GOSUB50
4130 IFA$="N"ORAA$="n"THEN GOTO 4010
4140 IFA$<>"Y" AND A$<>"y"THEN GOTO 4120
4150 PRINT:PRINT"Message Deleted from file."
4160 MC(MK)=0 : IFMK < HM THEN GOTO350
4170 FOR I=50 TO 1 STEP-1
4180 IFMC(I)>0 THEN HM=I : GOTO 350
4190 NEXT I : HM=0 : GOTO 350
5000 PRINT : PRINT"Message View Section":PRINT
5005 IF HM=0 THENPRINT"No messages in file.":GOTO350
5010 PRINT"Current high msg number is";HM
5020 PRINT:PRINT"Enter message number to View"
5030 PRINT"or RETURN to abort -> ";:LN=3:GOSUB50
5040 IFA$=""THEN GOTO 350
5050 MV=VAL(A$) : IFMV<1 OR MV>HM THEN PRINT"Invalid entry":GOTO 5010
5055 IFMC(MV)=0 THEN PRINT"That message does not exist.":PRINT:GOTO 5010
5060 PRINT:PRINT"Message ";MV
5070 PRINT"From : ";FM$(MV)
5080 PRINT"Sent to : ";TM$(MV)
5090 PRINT"Subject : ";MS$(MV)
5100 PRINT: FOR I=1 TO ML(MV)
5110 PRINT T$(MV,I) : NEXT I
5120 PRINT : GOTO 5010
7000 PRINT : PRINT"Chat Section":PRINT
7010 PRINT"Standby while I check for SYSOP."
7020 FOR I=1 TO 10
7030 PRINT I;" - ";
7040 IFINKEYY$="*" THEN GOTO 7100
7050 NEXT I : PRINT
7060 PRINT"Sorry, SYSOP is unavailble at this time."
7070 GOTO 350
7100 PRINT : PRINT
7110 PRINT"Hello ";N$(ID)
7120 PRINT "<>";:LN=64:GOSUB50
7130 IFA$="RETURN"THENPRINT"So long!":GOTO350
7140 GOTO7120
8000 PRINT:PRINT"<*><*> SYSOP MENU <*><*>":PRINT
8010 PRINT" 1 : Save DATA to disk"
8020 PRINT" 2 : Load DATA from disk"
8030 PRINT" 3 : Examine User file"
8040 PRINT" 4 : Insert new bulletin"
8050 PRINT" 5 : Return to Mini-Board"
8060 PRINT
8070 PRINT"==========> ";:LN=1:GOSUB50
8080 IFA$="" OR VAL(A$)=0 THEN GOTO8000
8090 SC=VAL(A$):IF SC<1 OR SC>5 THEN GOTO8000
8100 ON SC GOTO 6000,6500,8500,8200,180
9000 PRINT : PRINT"Are you sure you want to"
9010 PRINT"Terminate? ";:LN=1:GOSUB50
9020 IFA$="N"OR A$="n"THEN GOTO 350
9030 IFA$<>"Y" AND A$<>"y" THENGOTO 9010
9040 PRINT
9050 PRINT"Thank you for logging on ";N$(ID)
9060 PRINT"Please call back soon."
9100 GOTO 30