home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.ee.pdx.edu
/
2014.02.ftp.ee.pdx.edu.tar
/
ftp.ee.pdx.edu
/
pub
/
frp
/
tsr
/
debate
/
debate.bas
< prev
next >
Wrap
BASIC Source File
|
1994-12-22
|
3KB
|
133 lines
DIM p(50)
DIM f$(50)
DIM back(50)
DIM l$(25)
DIM r$(25)
DIM row(25)
DIM colname$(16)
REM Electric Guildsman General Reader
REM Copyright 1994 Jim Vassilakos
OPEN "i", 1, "colors.cmd"
FOR a = 0 TO 15
LINE INPUT #1, a$
colname$(a) = LCASE$(RIGHT$(a$, LEN(a$) - 4))
NEXT a
CLOSE
p(1) = 1
f$(1) = "main.mnu"
back(1) = 0
topp = 1: REM number of menus encountered
n = 1
10 REM read mnu file
SHELL "call egacolor 00 10"
SHELL "call egacolor 07 46"
OPEN "i", 1, f$(n)
CLS
q = 0: count = 0
DO UNTIL EOF(1)
count = count + 1
LINE INPUT #1, a$
i = INSTR(a$, "@")
l = LEN(a$)
IF i = 1 THEN
FOR y = 0 TO 15
IF LCASE$(RIGHT$(a$, l - 1)) = colname$(y) THEN COLOR y
NEXT y
count = count - 1
END IF
IF i > 1 THEN
q = q + 1
l$(q) = LEFT$(a$, i - 1)
r$(q) = RIGHT$(a$, l - i)
row(q) = count
a$ = l$(q)
END IF
IF i <> 1 THEN PRINT a$
LOOP
CLOSE
hip = q: REM the number of possible choices
15 REM make arrow
LOCATE row(p(n)), 2
COLOR 12
PRINT CHR$(196); CHR$(26);
20 REM get input
GOSUB 60
IF k2 = 0 AND k1 = 27 THEN GOTO 1000: REM esc
IF k2 = 0 AND (k1 = 81 OR k1 = 113) THEN GOTO 1000: REM Q/q
IF k2 = 1 AND (k1 = 72 OR k1 = 80) THEN GOTO 25: REM up/down
IF k2 = 1 AND (k1 = 75 OR k1 = 77) THEN GOTO 25: REM left/right
IF k2 = 0 AND k1 = 13 THEN GOTO 45: REM enter
IF k2 = 0 AND k1 = 32 THEN GOTO 45: REM space
GOTO 20
25 REM up & down arrow movement
LOCATE row(p(n)), 2
PRINT " "
IF k1 = 72 THEN p(n) = p(n) - 1: REM up
IF k1 = 80 THEN p(n) = p(n) + 1: REM down
IF k1 = 75 THEN p(n) = p(n) - 1: REM left
IF k1 = 77 THEN p(n) = p(n) + 1: REM right
IF p(n) > hip THEN p(n) = hip
IF p(n) < 1 THEN p(n) = 1
GOTO 15
45 REM select
ext$ = RIGHT$(r$(p(n)), 3)
IF ext$ = "exe" THEN
e$ = "call " + r$(p(n))
SHELL e$
END IF
IF ext$ = "txt" THEN
e$ = "call less " + r$(p(n))
SHELL e$
END IF
IF ext$ <> "mnu" THEN GOTO 10
REM determine if we've been there before
there = 0
FOR z = 1 TO topp
IF r$(p(n)) = f$(z) THEN there = z
NEXT z
REM yes we have
IF there <> 0 THEN n = there
REM no we haven't, so let's make a new place
IF there = 0 THEN
topp = topp + 1
back(topp) = n
f$(topp) = r$(p(n))
p(topp) = 1
n = topp
END IF
GOTO 10
60 REM read keyboard
k1 = 0: k2 = 0
62 k$ = INKEY$
IF k$ = "" THEN GOTO 62
SOUND 10000, .1
k1 = ASC(k$)
IF k1 <> 13 THEN GOTO 63
FOR note = 1 TO 10
SOUND note * 200, .1
NEXT note
63 IF k1 <> 0 THEN GOTO 64
k1 = ASC(RIGHT$(k$, 1))
k2 = 1
64 RETURN
1000 REM quit
IF back(n) = 0 GOTO 1010
n = back(n)
GOTO 10
1010 COLOR 13
CLS
PRINT "Have a Nice Day!"
END