The Snazzy Menu

Written by a student at North Junior High School in Boise, Idaho, 1994

This software was written for use in a school computer lab equipped with eight IBM PS/2 computers. You know, the kind that booted to a big blue ANSI drawing of "IBM" before it loaded DOS.

Anyway, it was a simple menu program to launch other applications in a restricted environment (the user was supposed to be unable to exit the menu program without the sysop password).

DECLARE SUB about ()
DECLARE SUB mainmenu ()
DECLARE SUB sysopmenu ()
DECLARE SUB help.file ()
DECLARE SUB sysopmenu.password ()
DECLARE SUB screen.savers ()

DIM SHARED p(6) AS STRING, option38(6) AS STRING, o(6) AS SINGLE
DIM SHARED pass(100) AS STRING

COMMON SHARED fore1 AS INTEGER, fore2 AS INTEGER, f1 AS INTEGER, f2 AS INTEGER, f3 AS INTEGER, back1 AS INTEGER, back2 AS INTEGER
COMMON SHARED sfore1 AS INTEGER, sfore2 AS INTEGER, sback1 AS INTEGER, sback2 AS INTEGER
COMMON SHARED heading1.63 AS STRING, heading.space1 AS SINGLE, heading.space2 AS SINGLE, heading AS SINGLE, howmany AS SINGLE, moreprograms.menu AS STRING
COMMON SHARED password.chr.num AS INTEGER, password AS STRING

OPEN "color.snz" FOR INPUT AS #1

OPEN "program.snz" FOR INPUT AS #2
INPUT #1, fore1
INPUT #1, fore2
INPUT #1, f1
INPUT #1, f2
INPUT #1, f3
INPUT #1, back1
INPUT #1, back2
INPUT #1, sfore1
INPUT #1, sfore2
INPUT #1, sback1
INPUT #1, sback2

INPUT #2, heading1.63$
heading! = (63 - LEN(heading1.63$)) / 2
IF CINT(heading!) = heading! THEN GOTO it.worked ELSE LET heading.space1! = INT(heading!): LET heading.space2! = INT(heading!): GOTO nope
it.worked:
LET heading.space1! = heading!: LET heading.space2! = heading! - 1
nope:

INPUT #2, option38(1)
INPUT #2, option38(2)
INPUT #2, option38(3)
INPUT #2, option38(4)
INPUT #2, option38(5)
INPUT #2, option38(6)
o(1) = 38 - LEN(option38(1))
o(2) = 38 - LEN(option38(2))
o(3) = 38 - LEN(option38(3))
o(4) = 38 - LEN(option38(4))
o(5) = 38 - LEN(option38(5))
o(6) = 38 - LEN(option38(6))

INPUT #2, p(1)
INPUT #2, p(2)
INPUT #2, p(3)
INPUT #2, p(4)
INPUT #2, p(5)
INPUT #2, p(6)
INPUT #2, password$
INPUT #2, password.chr.num

CALL mainmenu

CLOSE #1
CLOSE #2


'The source code for the arrow keys on the keyboard.

' kbd$ = INKEY$
' SELECT CASE kbd$
' CASE CHR$(0) + "H": GOTO 10 'up
' CASE CHR$(0) + "P": GOTO 10 'down
' CASE CHR$(0) + "K": END 'left
' CASE CHR$(0) + "M": GOTO 10 'right
' CASE ELSE
' END SELECT

SUB about

COLOR , 1
CLS
LOCATE 7, 24: COLOR 0, 15: PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"
LOCATE 8, 24: PRINT "³ "; CHR$(1); " "; CHR$(1); " ³Û"
LOCATE 9, 24: PRINT "³ "; : COLOR 11, 15: PRINT "The Snazzy Menu"; : COLOR 0, 15: PRINT " ³Û"
LOCATE 10, 24: PRINT "³ ³Û"
LOCATE 12, 24: PRINT "³ "; : COLOR 14, 15: PRINT "Written by [SOME 7TH GRADER]"; : COLOR 0, 15: PRINT " ³Û"
LOCATE 11, 24: PRINT "³ ³Û"
LOCATE 13, 24: PRINT "³ ³Û"
LOCATE 14, 24: PRINT "³ ³Û"
LOCATE 15, 24: PRINT "³ Version 2.0 ³Û"
LOCATE 16, 24: PRINT "³ ³Û"
LOCATE 17, 24: PRINT "³ "; CHR$(1); " "; CHR$(1); " ³Û"
LOCATE 18, 24: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ"
LOCATE 19, 25: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"
DO
key$ = INKEY$
COLOR 15, 1: LOCATE 22, 2: PRINT "Hit any key to return to the Main Menu . . ."
LOOP WHILE key$ = ""


END SUB

SUB mainmenu

beginmainmenu:

COLOR , back1
CLS
PRINT
LOCATE 2, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "ÕÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸"
LOCATE 3, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ ³Û"
LOCATE 4, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ "; : COLOR f1: PRINT SPC(heading.space1!); heading1.63$; SPC(heading.space2!); : COLOR fore2, back2: PRINT " ³Û"
LOCATE 5, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ ³Û"
LOCATE 6, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "ÆÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵Û"
LOCATE 7, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ "; : COLOR f3: PRINT "ABOUT SCREEN"; : COLOR fore2: PRINT " ³ OPTION # DESCRIPTION OF PROGRAM ³Û"
LOCATE 8, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ ³ ³Û"
LOCATE 8, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ ³ ³Û"
LOCATE 9, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ "; : COLOR f3: PRINT "SCREEN"; : COLOR fore2: PRINT " ³ 1) "; : COLOR f2: PRINT option38(1); SPC(o(1)); : COLOR fore2, back2: PRINT " ³Û"
LOCATE 10, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ "; : COLOR f3: PRINT "SAVERS"; : COLOR fore2: PRINT " ³ ³Û"
LOCATE 11, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ ³ 2) "; : COLOR f2: PRINT ; option38(2); SPC(o(2)); : COLOR fore2, back2: PRINT " ³Û"
LOCATE 12, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ "; : COLOR f3: PRINT "SYSOP MENU"; : COLOR fore2: PRINT " ³ ³Û"
LOCATE 13, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ ³ 3) "; : COLOR f2: PRINT ; option38(3); SPC(o(3)); : COLOR fore2, back2: PRINT " ³Û" LOCATE 14, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ "; : COLOR f3: PRINT "HELP ON MENU"; : COLOR fore2: PRINT " ³ ³Û"
LOCATE 15, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ ³ 4) "; : COLOR f2: PRINT ; option38(4); SPC(o(4)); : COLOR fore2, back2: PRINT " ³Û"
LOCATE 16, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "ÆÍÍÍÍÍÍÍÍÍÍÍÍÍ͵ ³Û"
LOCATE 17, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ Snazzy Menu ³ 5) "; : COLOR f2: PRINT ; option38(5); SPC(o(5)); : COLOR fore2, back2: PRINT " ³Û"
LOCATE 18, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ v2.0 ³ ³Û"
LOCATE 19, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ ³ 6) "; : COLOR f2: PRINT ; option38(6); SPC(o(6)); : COLOR fore2, back2: PRINT " ³Û"
LOCATE 20, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ ³ ³Û" LOCATE 21, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "³ ³ ³Û"
LOCATE 22, 1: COLOR , back1: PRINT " "; : COLOR fore2, back2: PRINT "ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ;Û"
LOCATE 23, 1: COLOR , back1: PRINT " "; : COLOR 0: PRINT " ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"
10 :
LOCATE 7, 8: COLOR back2, f3: PRINT " ABOUT SCREEN "
11
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H": LOCATE 7, 8: COLOR f3, back2: PRINT " ABOUT SCREEN ": GOTO 40
CASE CHR$(0) + "P": LOCATE 7, 8: COLOR f3, back2: PRINT " ABOUT SCREEN ": GOTO 20
CASE CHR$(0) + "M": LOCATE 7, 8: COLOR f3, back2: PRINT " ABOUT SCREEN ": GOTO 100
CASE CHR$(9): LOCATE 7, 8: COLOR f3, back2: PRINT " ABOUT SCREEN ": GOTO 100
CASE CHR$(13): CALL about: GOTO beginmainmenu
CASE "1": GOTO program1
CASE "2": GOTO program2
CASE "3": GOTO program3
CASE "4": GOTO program4
CASE "5": GOTO program5
CASE "6": GOTO program6
CASE ELSE: GOTO 11
END SELECT

20
LOCATE 9, 11: COLOR back2, f3: PRINT " SCREEN ": COLOR back2, f3: LOCATE 10, 11: PRINT " SAVERS "
21
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H": LOCATE 9, 11: COLOR f3, back2: PRINT " SCREEN ": LOCATE 10, 11: PRINT " SAVERS ": GOTO 10
CASE CHR$(0) + "P": LOCATE 9, 11: COLOR f3, back2: PRINT " SCREEN ": LOCATE 10, 11: PRINT " SAVERS ": GOTO 30
CASE CHR$(0) + "M": LOCATE 9, 11: COLOR f3, back2: PRINT " SCREEN ": LOCATE 10, 11: PRINT " SAVERS ": GOTO 100
CASE CHR$(9): LOCATE 9, 11: COLOR f3, back2: PRINT " SCREEN ": LOCATE 10, 11: PRINT " SAVERS ": GOTO 100
CASE CHR$(13): LOCATE 9, 11: COLOR f3, back2: PRINT " SCREEN ": LOCATE 10, 11: PRINT " SAVERS ": CALL screen.savers
CASE "1": GOTO program1
CASE "2": GOTO program2
CASE "3": GOTO program3
CASE "4": GOTO program4
CASE "5": GOTO program5
CASE "6": GOTO program6
CASE ELSE: GOTO 21
END SELECT

30
LOCATE 12, 9: COLOR back2, f3: PRINT " SYSOP MENU "
31
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H": LOCATE 12, 9: COLOR f3, back2: PRINT " SYSOP MENU ": GOTO 20
CASE CHR$(0) + "P": LOCATE 12, 9: COLOR f3, back2: PRINT " SYSOP MENU ": GOTO 40
CASE CHR$(0) + "M": LOCATE 12, 9: COLOR f3, back2: PRINT " SYSOP MENU ": GOTO 100
CASE CHR$(9): LOCATE 12, 9: COLOR f3, back2: PRINT " SYSOP MENU ": GOTO 100
CASE CHR$(13): GOTO sysopmenu.entry: GOTO beginmainmenu
CASE "1": GOTO program1
CASE "2": GOTO program2
CASE "3": GOTO program3
CASE "4": GOTO program4
CASE "5": GOTO program5
CASE "6": GOTO program6
CASE ELSE: GOTO 31
END SELECT

40
LOCATE 14, 8: COLOR back2, f3: PRINT " HELP ON MENU "
41
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H": COLOR f3, back2: LOCATE 14, 8: PRINT " HELP ON MENU ": GOTO 30
CASE CHR$(0) + "P": COLOR f3, back2: LOCATE 14, 8: PRINT " HELP ON MENU ": GOTO 10
CASE CHR$(0) + "M": COLOR f3, back2: LOCATE 14, 8: PRINT " HELP ON MENU ": GOTO 100
CASE CHR$(9): COLOR f3, back2: LOCATE 14, 8: PRINT " HELP ON MENU ": GOTO 100
CASE CHR$(13): GOTO help
CASE "1": GOTO program1
CASE "2": GOTO program2
CASE "3": GOTO program3
CASE "4": GOTO program4
CASE "5": GOTO program5
CASE "6": GOTO program6
CASE ELSE: GOTO 40
END SELECT

100
LOCATE 9, 23: COLOR f2: PRINT CHR$(16): LOCATE 9, 73: PRINT CHR$(17)
LOCATE 9, 35: COLOR back2, f2: PRINT option38(1)
101
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H"
LOCATE 9, 23: COLOR f2, back2: PRINT " ": LOCATE 9, 73: PRINT " "
LOCATE 9, 35: COLOR f2, back2: PRINT option38(1): GOTO 600
CASE CHR$(0) + "P"
LOCATE 9, 23: COLOR f2, back2: PRINT " ": LOCATE 9, 73: PRINT " "
LOCATE 9, 35: COLOR f2, back2: PRINT option38(1): GOTO 200
CASE CHR$(0) + "K"
LOCATE 9, 23: COLOR f2, back2: PRINT " ": LOCATE 9, 73: PRINT " "
LOCATE 9, 35: COLOR f2, back2: PRINT option38(1): GOTO 10
CASE CHR$(9)
LOCATE 9, 23: COLOR f2, back2: PRINT " ": LOCATE 9, 73: PRINT " "
LOCATE 9, 35: COLOR f2, back2: PRINT option38(1): GOTO 10
CASE CHR$(13)
LOCATE 9, 23: COLOR f2, back2: PRINT " ": LOCATE 9, 73: PRINT " "
LOCATE 9, 35: COLOR f2, back2: PRINT option38(1): GOTO program1
CASE "1": GOTO program1
CASE "2": GOTO program2
CASE "3": GOTO program3
CASE "4": GOTO program4
CASE "5": GOTO program5
CASE "6": GOTO program6
CASE ELSE: GOTO 101
END SELECT

200
LOCATE 11, 23: COLOR f2: PRINT CHR$(16): LOCATE 11, 73: PRINT CHR$(17)
LOCATE 11, 35: COLOR back2, f2: PRINT option38(2)
201
c$ = INKEY$
SELECT CASE c$
CASE CHR$(0) + "H"
LOCATE 11, 23: COLOR f2, back2: PRINT " ": LOCATE 11, 73: PRINT " "
LOCATE 11, 35: COLOR f2, back2: PRINT option38(2): GOTO 100
CASE CHR$(0) + "P"
LOCATE 11, 23: COLOR f2, back2: PRINT " ": LOCATE 11, 73: PRINT " "
LOCATE 11, 35: COLOR f2, back2: PRINT option38(2): GOTO 300
CASE CHR$(0) + "K"
LOCATE 11, 23: COLOR f2, back2: PRINT " ": LOCATE 11, 73: PRINT " "
LOCATE 11, 35: COLOR f2, back2: PRINT option38(2): GOTO 10
CASE CHR$(9)
LOCATE 11, 23: COLOR f2, back2: PRINT " ": LOCATE 11, 73: PRINT " "
LOCATE 11, 35: COLOR f2, back2: PRINT option38(2): GOTO 10
CASE CHR$(13)
LOCATE 11, 23: COLOR f2, back2: PRINT " ": LOCATE 11, 73: PRINT " "
LOCATE 11, 35: COLOR f2, back2: PRINT option38(2): GOTO program2
CASE "1": GOTO program1
CASE "2": GOTO program2
CASE "3": GOTO program3
CASE "4": GOTO program4
CASE "5": GOTO program5
CASE "6": GOTO program6
CASE ELSE: GOTO 201
END SELECT

300
LOCATE 13, 23: COLOR f2: PRINT CHR$(16): LOCATE 13, 73: PRINT CHR$(17)
LOCATE 13, 35: COLOR back2, f2: PRINT option38(3)
301
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H"
LOCATE 13, 23: COLOR f2, back2: PRINT " ": LOCATE 13, 73: PRINT " "
LOCATE 13, 35: COLOR f2, back2: PRINT option38(3): GOTO 200
CASE CHR$(0) + "P"
LOCATE 13, 23: COLOR f2, back2: PRINT " ": LOCATE 13, 73: PRINT " "
LOCATE 13, 35: COLOR f2, back2: PRINT option38(3): GOTO 400
CASE CHR$(0) + "K"
LOCATE 13, 23: COLOR f2, back2: PRINT " ": LOCATE 13, 73: PRINT " "
LOCATE 13, 35: COLOR f2, back2: PRINT option38(3): GOTO 10
CASE CHR$(9)
LOCATE 13, 23: COLOR f2, back2: PRINT " ": LOCATE 13, 73: PRINT " "
LOCATE 13, 35: COLOR f2, back2: PRINT option38(3): GOTO 10
CASE CHR$(13)
LOCATE 13, 23: COLOR f2, back2: PRINT " ": LOCATE 13, 73: PRINT " "
LOCATE 13, 35: COLOR f2, back2: PRINT option38(3): GOTO program3
CASE "1": GOTO program1
CASE "2": GOTO program2
CASE "3": GOTO program3
CASE "4": GOTO program4
CASE "5": GOTO program5
CASE "6": GOTO program6
CASE ELSE: GOTO 301
END SELECT

400
LOCATE 15, 23: COLOR f2: PRINT CHR$(16): LOCATE 15, 73: PRINT CHR$(17)
LOCATE 15, 35: COLOR back2, f2: PRINT option38(4)
401
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H"
LOCATE 15, 23: COLOR f2, back2: PRINT " ": LOCATE 15, 73: PRINT " "
LOCATE 15, 35: COLOR f2, back2: PRINT option38(4): GOTO 300
CASE CHR$(0) + "P"
LOCATE 15, 23: COLOR f2, back2: PRINT " ": LOCATE 15, 73: PRINT " "
LOCATE 15, 35: COLOR f2, back2: PRINT option38(4): GOTO 500
CASE CHR$(0) + "K"
LOCATE 15, 23: COLOR f2, back2: PRINT " ": LOCATE 15, 73: PRINT " "
LOCATE 15, 35: COLOR f2, back2: PRINT option38(4): GOTO 10
CASE CHR$(9)
LOCATE 15, 23: COLOR f2, back2: PRINT " ": LOCATE 15, 73: PRINT " "
LOCATE 15, 35: COLOR f2, back2: PRINT option38(4): GOTO 10
CASE CHR$(13)
LOCATE 15, 23: COLOR f2, back2: PRINT " ": LOCATE 15, 73: PRINT " "
LOCATE 15, 35: COLOR f2, back2: PRINT option38(4): GOTO program4
CASE "1": GOTO program1
CASE "2": GOTO program2
CASE "3": GOTO program3
CASE "4": GOTO program4
CASE "5": GOTO program5
CASE "6": GOTO program6
CASE ELSE: GOTO 401
END SELECT
500
LOCATE 17, 23: COLOR f2: PRINT CHR$(16): LOCATE 17, 73: PRINT CHR$(17)
LOCATE 17, 35: COLOR back2, f2: PRINT option38(5)
501
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H"
LOCATE 17, 23: COLOR f2, back2: PRINT " ": LOCATE 17, 73: PRINT " "
LOCATE 17, 35: COLOR f2, back2: PRINT option38(5): GOTO 400
CASE CHR$(0) + "P"
LOCATE 17, 23: COLOR f2, back2: PRINT " ": LOCATE 17, 73: PRINT " "
LOCATE 17, 35: COLOR f2, back2: PRINT option38(5): GOTO 600
CASE CHR$(0) + "K"
LOCATE 17, 23: COLOR f2, back2: PRINT " ": LOCATE 17, 73: PRINT " "
LOCATE 17, 35: COLOR f2, back2: PRINT option38(5): GOTO 10
CASE CHR$(9)
LOCATE 17, 23: COLOR f2, back2: PRINT " ": LOCATE 17, 73: PRINT " "
LOCATE 17, 35: COLOR f2, back2: PRINT option38(5): GOTO 10
CASE CHR$(13)
LOCATE 17, 23: COLOR f2, back2: PRINT " ": LOCATE 17, 73: PRINT " "
LOCATE 17, 35: COLOR f2, back2: PRINT option38(5): GOTO program5
CASE "1": GOTO program1
CASE "2": GOTO program2
CASE "3": GOTO program3
CASE "4": GOTO program4
CASE "5": GOTO program5
CASE "6": GOTO program6
CASE ELSE: GOTO 501
END SELECT

600
LOCATE 19, 23: COLOR f2: PRINT CHR$(16): LOCATE 19, 73: PRINT CHR$(17)
LOCATE 19, 35: COLOR back2, f2: PRINT option38(6)
601
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H"
LOCATE 19, 23: COLOR f2, back2: PRINT " ": LOCATE 19, 73: PRINT " "
LOCATE 19, 35: COLOR f2, back2: PRINT option38(6): GOTO 500
CASE CHR$(0) + "P"
LOCATE 19, 23: COLOR f2, back2: PRINT " ": LOCATE 19, 73: PRINT " "
LOCATE 19, 35: COLOR f2, back2: PRINT option38(6): GOTO 100
CASE CHR$(0) + "K"
LOCATE 19, 23: COLOR f2, back2: PRINT " ": LOCATE 19, 73: PRINT " "
LOCATE 19, 35: COLOR f2, back2: PRINT option38(6): GOTO 10
CASE CHR$(9)
LOCATE 19, 23: COLOR f2, back2: PRINT " ": LOCATE 19, 73: PRINT " "
LOCATE 19, 35: COLOR f2, back2: PRINT option38(6): GOTO 10
CASE CHR$(13)
LOCATE 19, 23: COLOR f2, back2: PRINT " ": LOCATE 19, 73: PRINT " "
LOCATE 19, 35: COLOR f2, back2: PRINT option38(6): GOTO program6
CASE "1": GOTO program1
CASE "2": GOTO program2
CASE "3": GOTO program3
CASE "4": GOTO program4
CASE "5": GOTO program5
CASE "6": GOTO program6
CASE ELSE: GOTO 601
END SELECT

help:
'CALL help.file
END

sysopmenu.entry:
CALL sysopmenu.password
GOTO beginmainmenu

program1:
COLOR , 0
CLS
SHELL p(1)
SHELL "pause"
GOTO beginmainmenu

program2:
COLOR , 0
CLS
SHELL p(2)
SHELL "pause"
GOTO beginmainmenu

program3:
COLOR , 0
CLS
SHELL p(3)
SHELL "pause"
GOTO beginmainmenu

program4:
COLOR , 0
CLS
SHELL p(4)
SHELL "pause"
GOTO beginmainmenu

program5:
COLOR , 0
CLS
SHELL p(5)
GOTO beginmainmenu

program6:
COLOR , 0
CLS
SHELL p(6)
GOTO beginmainmenu

END SUB

SUB screen.savers

END SUB

SUB sysopmenu
beginsysop:
CLS

COLOR sfore1, sback2
LOCATE 3, 9: COLOR sfore1, sback2: PRINT "ÕÍÍ -=ð Sysop Menu ð=- Í͸"
LOCATE 4, 9: COLOR sfore1, sback2: PRINT "³ ³Û"
LOCATE 5, 9: COLOR sfore1, sback2: PRINT "³ è "; : COLOR sfore2: PRINT "ÄÄÄ® Colors ¯ÄÄÄ "; : COLOR sfore1: PRINT "è ³Û"
LOCATE 6, 9: COLOR sfore1, sback2: PRINT "³ ³Û"
LOCATE 7, 9: COLOR sfore1, sback2: PRINT "³ è "; : COLOR sfore2: PRINT "ÄÄ® Programs ¯ÄÄ "; : COLOR sfore1: PRINT "è ³Û"
LOCATE 8, 9: COLOR sfore1, sback2: PRINT "³ ³Û"
LOCATE 9, 9: COLOR sfore1, sback2: PRINT "³ è "; : COLOR sfore2: PRINT "® Descriptions ¯ "; : COLOR sfore1: PRINT "è ³Û"
LOCATE 10, 9: COLOR sfore1, sback2: PRINT "³ ³Û"
LOCATE 11, 9: COLOR sfore1, sback2: PRINT "³ è "; : COLOR sfore2: PRINT "ÄÄ® Password ¯ÄÄ"; : COLOR sfore1: PRINT " è ³Û"
LOCATE 12, 9: COLOR sfore1, sback2: PRINT "³ ³Û"
LOCATE 13, 9: COLOR sfore1, sback2: PRINT "³ è "; : COLOR sfore2: PRINT "Ä® More Options ¯Ä"; : COLOR sfore1: PRINT " è ³Û"
LOCATE 14, 9: COLOR sfore1, sback2: PRINT "³ ³Û"
LOCATE 15, 9: COLOR sfore1, sback2: PRINT "³ è "; : COLOR sfore2: PRINT "ÄÄÄ® Help ¯ÄÄÄ"; : COLOR sfore1: PRINT " è ³Û"
LOCATE 16, 9: COLOR sfore1, sback2: PRINT "ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ;Û"
LOCATE 17, 10: COLOR 0, sback2: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"

1
LOCATE 5, 13: COLOR sback2, sfore2: PRINT "ÄÄÄ® Colors ¯ÄÄÄ"
1.1
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H": LOCATE 5, 13: COLOR sfore2, sback2: PRINT "ÄÄÄ® Colors ¯ÄÄÄ": GOTO 6
CASE CHR$(0) + "P": LOCATE 5, 13: COLOR sfore2, sback2: PRINT "ÄÄÄ® Colors ¯ÄÄÄ": GOTO 2
CASE CHR$(27): GOTO ending
CASE CHR$(13): LOCATE 5, 13: COLOR sfore2, sback2: PRINT "ÄÄÄ® Colors ¯ÄÄÄ": GOTO c1
CASE ELSE: GOTO 1.1
END SELECT

2
LOCATE 7, 13: COLOR sback2, sfore2: PRINT "ÄÄ® Programs ¯ÄÄ"
2.1
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H": LOCATE 7, 13: COLOR sfore2, sback2: PRINT "ÄÄ® Programs ¯ÄÄ": GOTO 1
CASE CHR$(0) + "P": LOCATE 7, 13: COLOR sfore2, sback2: PRINT "ÄÄ® Programs ¯ÄÄ": GOTO 3
CASE CHR$(27): GOTO ending
CASE CHR$(13): LOCATE 7, 13: COLOR sfore2, sback2: PRINT "ÄÄ® Programs ¯ÄÄ": GOTO c2
CASE ELSE: GOTO 2.1
END SELECT

3
LOCATE 9, 13: COLOR sback2, sfore2: PRINT "® Descriptions ¯"
3.1
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H": LOCATE 9, 13: COLOR sfore2, sback2: PRINT "® Descriptions ¯": GOTO 2
CASE CHR$(0) + "P": LOCATE 9, 13: COLOR sfore2, sback2: PRINT "® Descriptions ¯": GOTO 4
CASE CHR$(27): GOTO ending
CASE CHR$(13): LOCATE 9, 13: COLOR sfore2, sback2: PRINT "® Descriptions ¯": GOTO c3
CASE ELSE: GOTO 3
END SELECT

4
LOCATE 11, 13: COLOR sback2, sfore2: PRINT "ÄÄ® Password ¯ÄÄ"
4.1
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H": LOCATE 11, 13: COLOR sfore2, sback2: PRINT "ÄÄ® Password ¯ÄÄ": GOTO 3
CASE CHR$(0) + "P": LOCATE 11, 13: COLOR sfore2, sback2: PRINT "ÄÄ® Password ¯ÄÄ": GOTO 5
CASE CHR$(27): GOTO ending
CASE CHR$(13): LOCATE 11, 13: COLOR sfore2, sback2: PRINT "ÄÄ® Password ¯ÄÄ": GOTO c4
CASE ELSE: GOTO 4.1
END SELECT

5
LOCATE 13, 13: COLOR sback2, sfore2: PRINT "Ä® More Options ¯Ä"
5.1
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H": LOCATE 13, 13: COLOR sfore2, sback2: PRINT "Ä® More Options ¯Ä": GOTO 4
CASE CHR$(0) + "P": LOCATE 13, 13: COLOR sfore2, sback2: PRINT "Ä® More Options ¯Ä": GOTO 6
CASE CHR$(27): GOTO ending
CASE CHR$(13): LOCATE 13, 13: COLOR sfore2, sback2: PRINT "Ä® More Options ¯Ä": GOTO c5
CASE ELSE: GOTO 5.1
END SELECT

6
LOCATE 15, 13: COLOR sback2, sfore2: PRINT "ÄÄÄ® Help ¯ÄÄÄ"
6.1
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "H": LOCATE 15, 13: COLOR sfore2, sback2: PRINT "ÄÄÄ® Help ¯ÄÄÄ": GOTO 5
CASE CHR$(0) + "P": LOCATE 15, 13: COLOR sfore2, sback2: PRINT "ÄÄÄ® Help ¯ÄÄÄ": GOTO 1
CASE CHR$(27): GOTO ending
CASE CHR$(13): LOCATE 15, 13: COLOR sfore2, sback2: PRINT "ÄÄÄ® Help ¯ÄÄÄ": GOTO c6
CASE ELSE: GOTO 6.1
END SELECT

c1:

LOCATE 2, 37: COLOR sfore1, sback2: PRINT "ÚÄÄÄÄÄÄÄÄ Colors ÄÄÄÄÄÄÄÄ¿"
LOCATE 3, 37: COLOR sfore1, sback2: PRINT "³ Main Menu ³Û"
LOCATE 4, 37: COLOR sfore1, sback2: PRINT "³ Sysop Menu ³Û"
LOCATE 5, 37: COLOR sfore1, sback2: PRINT "³ Screen Saver Menu ³Û"
LOCATE 6, 37: COLOR sfore1, sback2: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ"
LOCATE 7, 38: COLOR 0, sback2: PRINT "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"
a1:
LOCATE 3, 37: COLOR sfore1, sback2: PRINT "³ "; : COLOR sback2, sfore1: PRINT " Main Menu "; : COLOR sfore1, sback2: PRINT " ³"
a1.1:
SELECT CASE INKEY$
CASE CHR$(0) + "H": LOCATE 3, 37: COLOR sfore1, sback2: PRINT "³ Main Menu ³": GOTO a3
CASE CHR$(0) + "P": LOCATE 3, 37: COLOR sfore1, sback2: PRINT "³ Main Menu ³": GOTO a2
CASE CHR$(27): GOTO beginsysop
CASE CHR$(13): GOTO color.mainmenu
CASE ELSE: GOTO a1.1
END SELECT

a2:
LOCATE 4, 37: COLOR sfore1, sback2: PRINT "³ "; : COLOR sback2, sfore1: PRINT " Sysop Menu "; : COLOR sfore1, sback2: PRINT " ³"
a2.1:
SELECT CASE INKEY$
CASE CHR$(0) + "H": LOCATE 4, 37: COLOR sfore1, sback2: PRINT "³ Sysop Menu ³": GOTO a1
CASE CHR$(0) + "P": LOCATE 4, 37: COLOR sfore1, sback2: PRINT "³ Sysop Menu ³": GOTO a3
CASE CHR$(27): GOTO beginsysop
CASE CHR$(13): GOTO color.sysopmenu
CASE ELSE: GOTO a2.1
END SELECT

a3:
LOCATE 5, 37: COLOR sfore1, sback2: PRINT "³ "; : COLOR sback2, sfore1: PRINT " Screen Saver Menu "; : COLOR sfore1, sback2: PRINT " ³"
a3.1:
SELECT CASE INKEY$
CASE CHR$(0) + "H": LOCATE 5, 37: COLOR sfore1, sback2: PRINT "³ Screen Saver Menu ³": GOTO a2
CASE CHR$(0) + "P": LOCATE 5, 37: COLOR sfore1, sback2: PRINT "³ Screen Saver Menu ³": GOTO a1
CASE CHR$(27): GOTO beginsysop
CASE CHR$(13): GOTO color.screensavermenu
CASE ELSE: GOTO a3.1
END SELECT

color.mainmenu:
color.sysopmenu:
color.screensavermenu:


DO: a$ = INKEY$: LOOP UNTIL a$ <> ""

c2:
c3:
c4:
c5:
c6:

ending:
END SUB

SUB sysopmenu.password

test.for.password:

LOCATE 10, 30: COLOR 0, 12: PRINT "ÉÍÍÍ Password? ÍÍÍ»"
LOCATE 11, 30: COLOR 0, 12: PRINT "º º"
LOCATE 12, 30: COLOR 0, 12: PRINT "º º"
LOCATE 13, 30: COLOR 0, 12: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"

test.again:

LOCATE 11, 30: COLOR 0, 12: PRINT "º º"

FOR x = 1 TO 100 STEP 1
pass(x) = ""
NEXT x

x = 0
FOR y = 31 TO 8000000
x = x + 1
IF y < 31 THEN GOTO release
IF x > 16 AND pass(x + 1) <> CHR$(8) THEN SOUND 1000, .1
IF x < 15 THEN LOCATE 11, (y + 1)
IF x < 15 THEN COLOR 16
IF x < 15 THEN PRINT "³"
IF x < 15 THEN COLOR 0
DO
pass(x) = INKEY$
IF pass(x) = CHR$(13) THEN GOTO check
LOOP WHILE pass(x) = ""
IF y <= 45 AND pass(x) <> CHR$(8) THEN LOCATE 11, (y + 1)
IF y <= 45 AND pass(x) <> CHR$(8) THEN PRINT "±"
IF pass(x) = CHR$(8) AND x <= 15 THEN LOCATE 11, y
IF pass(x) = CHR$(8) AND x <= 15 THEN PRINT " "
IF pass(x) = CHR$(8) AND x <= 15 THEN LOCATE 11, y + 1
IF pass(x) = CHR$(8) AND x <= 15 THEN PRINT " "
IF pass(x) = CHR$(8) THEN y = y - 2
IF pass(x) = CHR$(8) THEN x = x - 2
release:
NEXT y

check:

password.check$ = ""

FOR x = 1 TO password.chr.num STEP 1
password.check$ = password.check$ + pass(x)
NEXT x

IF password.check$ = password$ THEN GOTO good ELSE GOTO wrong

good:

LOCATE 12, 35: COLOR 15: PRINT "Accepted!"
DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
CALL sysopmenu
GOTO leave

wrong:
counter = counter + 1
BEEP
IF counter = 1 THEN LOCATE 12, 37
IF counter = 1 THEN PRINT "Nope"
IF counter = 1 THEN GOTO test.again
IF counter = 2 THEN LOCATE 12, 35
IF counter = 2 THEN PRINT "Nice Try"
IF counter = 2 THEN GOTO test.again
IF counter = 3 THEN LOCATE 12, 33
IF counter = 3 THEN COLOR 31
IF counter = 3 THEN PRINT "Access Denied"
DO: LOOP UNTIL INKEY$ <> ""

leave:
END SUB