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 >
BASIC Source File  |  1994-12-22  |  3KB  |  133 lines

  1.  
  2. DIM p(50)
  3. DIM f$(50)
  4. DIM back(50)
  5. DIM l$(25)
  6. DIM r$(25)
  7. DIM row(25)
  8. DIM colname$(16)
  9.  
  10. REM Electric Guildsman General Reader
  11. REM Copyright 1994 Jim Vassilakos
  12.  
  13. OPEN "i", 1, "colors.cmd"
  14. FOR a = 0 TO 15
  15. LINE INPUT #1, a$
  16. colname$(a) = LCASE$(RIGHT$(a$, LEN(a$) - 4))
  17. NEXT a
  18. CLOSE
  19.  
  20. p(1) = 1
  21. f$(1) = "main.mnu"
  22. back(1) = 0
  23. topp = 1: REM number of menus encountered
  24.  
  25. n = 1
  26. 10 REM read mnu file
  27. SHELL "call egacolor 00 10"
  28. SHELL "call egacolor 07 46"
  29. OPEN "i", 1, f$(n)
  30. CLS
  31. q = 0: count = 0
  32. DO UNTIL EOF(1)
  33.    count = count + 1
  34.    LINE INPUT #1, a$
  35.    i = INSTR(a$, "@")
  36.    l = LEN(a$)
  37.    IF i = 1 THEN
  38.       FOR y = 0 TO 15
  39.       IF LCASE$(RIGHT$(a$, l - 1)) = colname$(y) THEN COLOR y
  40.       NEXT y
  41.       count = count - 1
  42.    END IF
  43.    IF i > 1 THEN
  44.       q = q + 1
  45.       l$(q) = LEFT$(a$, i - 1)
  46.       r$(q) = RIGHT$(a$, l - i)
  47.       row(q) = count
  48.       a$ = l$(q)
  49.    END IF
  50.    IF i <> 1 THEN PRINT a$
  51. LOOP
  52. CLOSE
  53. hip = q: REM the number of possible choices
  54.  
  55. 15 REM make arrow
  56. LOCATE row(p(n)), 2
  57. COLOR 12
  58. PRINT CHR$(196); CHR$(26);
  59.  
  60. 20 REM get input
  61. GOSUB 60
  62. IF k2 = 0 AND k1 = 27 THEN GOTO 1000: REM esc
  63. IF k2 = 0 AND (k1 = 81 OR k1 = 113) THEN GOTO 1000: REM Q/q
  64. IF k2 = 1 AND (k1 = 72 OR k1 = 80) THEN GOTO 25: REM up/down
  65. IF k2 = 1 AND (k1 = 75 OR k1 = 77) THEN GOTO 25: REM left/right
  66. IF k2 = 0 AND k1 = 13 THEN GOTO 45: REM enter
  67. IF k2 = 0 AND k1 = 32 THEN GOTO 45: REM space
  68. GOTO 20
  69.  
  70. 25 REM up & down arrow movement
  71. LOCATE row(p(n)), 2
  72. PRINT "  "
  73. IF k1 = 72 THEN p(n) = p(n) - 1: REM up
  74. IF k1 = 80 THEN p(n) = p(n) + 1: REM down
  75. IF k1 = 75 THEN p(n) = p(n) - 1: REM left
  76. IF k1 = 77 THEN p(n) = p(n) + 1: REM right
  77. IF p(n) > hip THEN p(n) = hip
  78. IF p(n) < 1 THEN p(n) = 1
  79. GOTO 15
  80.  
  81. 45 REM select
  82. ext$ = RIGHT$(r$(p(n)), 3)
  83. IF ext$ = "exe" THEN
  84.    e$ = "call " + r$(p(n))
  85.    SHELL e$
  86. END IF
  87. IF ext$ = "txt" THEN
  88.    e$ = "call less " + r$(p(n))
  89.    SHELL e$
  90. END IF
  91. IF ext$ <> "mnu" THEN GOTO 10
  92. REM determine if we've been there before
  93. there = 0
  94. FOR z = 1 TO topp
  95.    IF r$(p(n)) = f$(z) THEN there = z
  96. NEXT z
  97. REM yes we have
  98. IF there <> 0 THEN n = there
  99. REM no we haven't, so let's make a new place
  100. IF there = 0 THEN
  101.    topp = topp + 1
  102.    back(topp) = n
  103.    f$(topp) = r$(p(n))
  104.    p(topp) = 1
  105.    n = topp
  106. END IF
  107. GOTO 10
  108.  
  109. 60 REM read keyboard
  110. k1 = 0: k2 = 0
  111. 62 k$ = INKEY$
  112. IF k$ = "" THEN GOTO 62
  113. SOUND 10000, .1
  114. k1 = ASC(k$)
  115. IF k1 <> 13 THEN GOTO 63
  116. FOR note = 1 TO 10
  117. SOUND note * 200, .1
  118. NEXT note
  119. 63 IF k1 <> 0 THEN GOTO 64
  120. k1 = ASC(RIGHT$(k$, 1))
  121. k2 = 1
  122. 64 RETURN
  123.  
  124. 1000 REM quit
  125. IF back(n) = 0 GOTO 1010
  126. n = back(n)
  127. GOTO 10
  128. 1010 COLOR 13
  129. CLS
  130. PRINT "Have a Nice Day!"
  131. END
  132.  
  133.