'===========================================================================
' Subject: PASSWORD ENTRY                     Date: 12-02-95 (00:00)       
'  Author: Raymond Joh                        Code: QB, QBasic, PDS        
'  Origin: Dslayer@gnn.com                  Packet: MISC.ABC
'===========================================================================
' This file was created and runs on QBasic.Let it be known that it is now
' donated to the Public Domain.
' Author:Raymond Joh
' All Comments and some flames welcomed
' Dslayer@gnn.com
DECLARE SUB MESSAGEWINDOW ()
DECLARE SUB GRAPHICS ()
'                   ###################################
'                   ##  === Password Entry Code ===  ##
'                   ###################################
SCREEN 12                                'SCREEN MODE OF CHOICE BY AUTHOR
GRAPHICS                                 'LOADS BACKGROUND AND BORDER
MESSAGEWINDOW                            'LOADS EMPTY MESSAGE WINDOW
100                                      'RESETS USER ENTRY BOX
P% = 39                                  'SETS LINE POSITION FOR LOCATE CALLS
P1% = P%                                 'REMEBERS ORIGINAL LINE POSITION
'                     ##############################
'                     ##  MESSAGE BOX FIXED TEXT  ##
'                     ##############################
LOCATE 16, P%: COLOR 7: PRINT "THIS SYSTEM IS A           "    'ENTER
LOCATE 17, P%: COLOR 15: PRINT "    COMPUTER SOLUTIONS     "   ' YOUR
LOCATE 18, P%: COLOR 7: PRINT "         SECURE SITE       "    '  DESIRED
LOCATE 19, P%: COLOR 12: PRINT " ========================  "   ' TEXT
LOCATE 20, P%: COLOR 7: PRINT "PLEASE ENTER YOUR PASSWORD "    'HERE
'                     ##############################
'                     ##  ENTER PROGRAM PASSWORD  ##
'                     ##############################
PASSWORD$ = "GUEST"
'
PASS$ = ""                               'DEFINES BEGINNING PASSWORD STATE
DO
  DO                                           '  LOOP
    CHAR$ = INKEY$                             '    FOR
  LOOP UNTIL CHAR$ <> ""                       '      INKEY$
  IF CHAR$ = CHR$(8) THEN                      'IF <BS> KEY PRESSED
    PLEN = LEN(PASS$) - 1                      'ADJUST POSITION LENGTH
    IF LEN(PASS$) = 0 THEN PLEN = 0: P% = P1%  'BACKSTOP FOR <BS> ENTRY
    PASS$ = LEFT$(PASS$, PLEN)                 'TRIM PASSWORD STRING
    P% = P% - 1                                'RESET LINE POSTION
    LOCATE 22, P% + 10: COLOR 15: PRINT " "    'REMOVE "X" PLACEHOLDER
  ELSEIF CHAR$ <> CHR$(13) THEN                'ENTER PRESSED ???
    IF P% = 47 THEN                            'SET PASSWORD LENGTH @ 8
      P% = P% - 1                              'STOP LINE INCREMENT
      PASS$ = PASS$                            'FREEZE PASS$
    ELSEIF P% < 47 THEN                        'PASSWORD WITHIN RANGE
      PASS$ = PASS$ + CHAR$                    'ADD INKEY TO PASSWORD
      LOCATE 22, P% + 9: COLOR 15: PRINT "X"   'PRINT "X" PLACEHOLDER
      P% = P% + 1                              'ADVANCE LINE POSITION
    END IF
  END IF
LOOP UNTIL (CHAR$ = CHR$(13))                  'LOOP W/CONTROL ARGUMENT
IF CHAR$ <> CHR$(27) THEN                      'IF ENTER PRESSED
IF UCASE$(PASS$) = PASSWORD$ THEN                         'VALID PASSWORD INPUT
  LOCATE 22, P1%
  COLOR 12
  PRINT "    HELLO, MR. 'GUEST'   "             'GREETING
  SLEEP (1)
  LOCATE 22, P1%
  COLOR 12
  PRINT "    OFF TO SECURE SITE    "
ELSEIF UCASE$(PASS$) <> PASSWORD$ THEN          'INVALID PASSWORD INPUT
  LOCATE 22, P1%
  COLOR 12
  PRINT "       ENTRY DENIED     "              'ENTRY DENIED
  BEEP
  SLEEP (1)
  LOCATE 22, P1%
  COLOR 15
  PRINT "        TRY AGAIN       "              'TRY AGAIN
  SLEEP (1)
  LOCATE 22, P1% - 1
  COLOR 15
  PRINT "                        "              'CLEAR INPUT AREA
  GOSUB 100
END IF
END IF

SUB GRAPHICS
REM               ###################################
REM               ## PLACE BORDER\SHADE BACKGROUND ##
REM               ###################################
FOR I = 1 TO 26
LOCATE I + 3, 1: COLOR 8: PRINT ; STRING$(80, 177)
NEXT I
LINE (1, 32)-(638, 448), 12, B
LINE (2, 33)-(637, 447), 12, B
LINE (3, 34)-(636, 446), 15, B
LINE (4, 35)-(635, 445), 15, B
LINE (5, 36)-(634, 444), 7, B
LINE (6, 37)-(633, 443), 7, B
END SUB

SUB MESSAGEWINDOW
REM                ###########################
REM                ## CREATE MESSAGE WINDOW ##
REM                ###########################
LINE (291, 221)-(524, 369), 0, BF
LINE (290, 220)-(525, 370), 7, B
LINE (289, 219)-(526, 371), 15, B
LINE (288, 218)-(527, 372), 12, B
END SUB

