'===========================================================================
' Subject: BBS DIAL-UP                        Date: 06-24-97 (21:26)       
'  Author: Michael G. Stewart                 Code: QB, QBasic, PDS        
'  Origin: mikegs@juno.com                  Packet: MODEM.ABC
'===========================================================================
DECLARE SUB checkname (name$)
DECLARE SUB checkpass (name$, pass$)
DECLARE SUB Keyscan ()
COMMON SHARED ModemIn$
a% = FRE(-2)
CLEAR , , a%
CLS
PRINT "Press any key to activate Arrowhead BBS"
SLEEP
OPEN "Com2:9600,N,8,1,BIN" FOR RANDOM AS #1 LEN = a%
PRINT #1, "ATA"
SLEEP
PRINT #1, "Arrowhead BBS"; CHR$(13)
PRINT #1, "(C) 1997 Arrowhead Corporation, Inc."; CHR$(13)
PRINT #1, "System Operator: Mike Stewart"; CHR$(13)

login:
PRINT #1, "Input Name: ";
LINE INPUT #1, name$
checkname name$
IF name$ <> "Guest" THEN
 PRINT #1, CHR$(13); "Input Password: "
 LINE INPUT #1, pass$
END IF
checkpass name$, pass$
PRINT #1, CHR$(13)

mainmenu:
COLOR 14
PRINT #1, "Welcome to the Arrowhead Bulliten Board Service!"; CHR$(13)
COLOR 12
PRINT #1, "This BBS is still under construction!"; CHR$(13)
COLOR 3
PRINT #1, "Thank you for your tolerence."; CHR$(13); CHR$(13)
COLOR 15
PRINT #1, "Arrowhead BBS Main Menu:"; CHR$(13)
PRINT #1, "1) Sysop Chat"; CHR$(13)
PRINT #1, "2) E-Mail Menu"; CHR$(13)
PRINT #1, "3) Quit"; CHR$(13)
PRINT #1, "Your Choice: "
INPUT #1, a$
IF a$ = "1" THEN GOSUB sysopchat
IF a$ = "2" THEN GOSUB mailmenu
IF a$ = "3" THEN GOSUB quit
GOSUB mainmenu

mailmenu:
COLOR 15
PRINT #1, CHR$(13)
IF name$ = "Guest" THEN GOSUB mainmenu
PRINT #1, "Arrowhead BBS E-Mail Menu:"; CHR$(13)
PRINT #1, "1) Read E-Mail"; CHR$(13)
PRINT #1, "2) Write E-Mail"; CHR$(13)
PRINT #1, "3) Delete E-Mail"; CHR$(13)
PRINT #1, "4) Main Menu"; CHR$(13)
PRINT #1, "5) Quit"; CHR$(13)
INPUT #1, a$
IF a$ = "1" THEN GOSUB readmail
IF a$ = "2" THEN GOSUB writemail
IF a$ = "3" THEN GOSUB clearmail
IF a$ = "4" THEN GOSUB mainmenu
IF a$ = "5" THEN GOSUB quit
GOSUB mailmenu

readmail:
OPEN name$ FOR INPUT AS #2
DO WHILE NOT EOF(2)
 DO WHILE rec$ <> "End of Message"
  LINE INPUT #2, rec$
  PRINT #1, rec$; CHR$(13)
 LOOP
 IF EOF(2) THEN EXIT DO
 PRINT #1, "Press any key to view next message."; CHR$(13)
 INPUT #1, a$
LOOP
PRINT #1, "End of E-Mail File"; CHR$(13)
SLEEP 3
CLOSE #2
GOSUB mailmenu

writemail:
PRINT #1, "Users to write to:"; CHR$(13)
PRINT #1, "1) Jerred Bell"; CHR$(13)
PRINT #1, "2) Mike Stewart (SysOp)"; CHR$(13)
PRINT #1, "3) Internet E-Mail (via Juno.com)"; CHR$(13)
PRINT #1, "4) Main Menu"; CHR$(13)
PRINT #1, "5) E-Mail Menu"; CHR$(13)
PRINT #1, "6) Quit"; CHR$(13)
INPUT #1, a$
IF a$ = "1" THEN file$ = "Jerred"
IF a$ = "2" THEN file$ = "Mike"
IF a$ = "3" THEN file$ = "c:\juno\bbs.txt"
IF a$ = "4" THEN GOSUB mainmenu
IF a$ = "5" THEN GOSUB mailmenu
IF a$ = "6" THEN GOSUB quit
IF VAL(a$) > 6 THEN GOSUB writemail
OPEN file$ FOR APPEND AS #2
PRINT #2, "Arrowhead BBS E-Mail From: "; name$
PRINT #1, "Subject"
LINE INPUT #1, SUB$
PRINT #1, CHR$(13)
PRINT #2, "Subject: "; SUB$
PRINT #2, "Date & Time: "; DATE$; "&"; TIME$
PRINT #2, ""
PRINT #1, "You have 20 lines to write on, press enter to go"; CHR$(13)
PRINT #1, "to the next line. You can't go back to another line!"; CHR$(13)
PRINT #1, "Type 'End of Message' on one line to end!"; CHR$(13)
DO
 a% = a% + 1
 IF a% = 20 THEN EXIT DO
 LINE INPUT #1, mes$
 PRINT #2, mes$
 IF mes$ = "End of Message" THEN EXIT DO
LOOP
PRINT #1, "Message Sent"; CHR$(13)
PRINT #2, ""
CLOSE #2
SLEEP 2
GOSUB mailmenu

clearmail:
PRINT #1, "All E-Mail Cleared"; CHR$(13)
OPEN name$ FOR OUTPUT AS #2
CLOSE #2
SLEEP 2
GOSUB mailmenu

sysopchat:
COLOR 7
PRINT #1, "Please Wait...."; CHR$(13)
DO UNTIL INKEY$ <> ""
 BEEP
 SLEEP 1
LOOP
PRINT #1, "Sysop Chat Active"; CHR$(13)
PRINT #1, "Press [ESC] to Quit Sysop Chat"; CHR$(13)
CLS
ON ERROR GOTO Handler
ON COM(2) GOSUB GetBuf
COM(2) ON
DO
 CALL Keyscan      ' You're online now. Stay in this loop forever.
LOOP

Handler:
RESUME NEXT

GetBuf:
instr$ = INPUT$(LOC(1), #1)
IF instr$ = CHR$(27) THEN GOSUB quitsysopchat
   DO
      BackSpace = INSTR(instr$, CHR$(8))
      IF BackSpace THEN
         MID$(instr$, BackSpace) = CHR$(29)
      END IF
   LOOP WHILE BackSpace
   DO
      LineFeed = INSTR(instr$, CHR$(10))
      IF LineFeed THEN
         instr$ = LEFT$(instr$, LineFeed - 1) + MID$(instr$, LineFeed + 1)
      END IF
   LOOP WHILE LineFeed
   ModemIn$ = RIGHT$(ModemIn$ + instr$, 10240)
   PRINT (instr$);
RETURN

quitsysopchat:
COM(2) OFF
ON ERROR GOTO 0
GOSUB mainmenu

quit:
PRINT #1, "Closing Connection..."
PRINT #1, "Thank You for using Gascan BBS!"
CLOSE #1
END

SUB checkname (name$)
IF name$ = "Jerred" THEN EXIT SUB
IF name$ = "Mike" THEN EXIT SUB
IF name$ = "Guest" THEN EXIT SUB
PRINT #1, "Incorrect Login"; CHR$(13)
PRINT #1, "Login Name";
checkname name$
END SUB

SUB checkpass (name$, pass$)
IF name$ = "Jerred" AND pass$ = "kc7psi" THEN EXIT SUB
IF name$ = "Mike" AND pass$ = "2928751" THEN EXIT SUB
IF name$ = "Guest" THEN EXIT SUB
PRINT #1, CHR$(13); "Incorrect password"; CHR$(13)
PRINT #1, "Input password"
LINE INPUT #1, pass$
checkpass name$, pass$

END SUB

SUB Keyscan
    a$ = INKEY$
    PRINT a$;
    PRINT #1, a$;
    IF a$ = CHR$(27) THEN CLOSE #1: END
END SUB
