home *** CD-ROM | disk | FTP | other *** search
/ RBBS in a Box Volume 1 #3.1 / RBBSIABOX31.cdr / mlpc / menu.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-10-04  |  5.0 KB  |  172 lines

  1. 110      DEFINT I-N 
  2. 115    'This menu for BASIC programs was translated to structured basic
  3. 120    'by Paul McKnight March 26, 1983
  4. 125    'DOS 2.0 Version
  5. 130    '
  6. 135    'constants
  7. 140      DEFINT A-H
  8. 145      DEFINT O-Z
  9. 150      CR$=CHR$(13)
  10. 155    '
  11. 160     GOTO 25000 ' jump to program 
  12. 200     '----------------------- PROCEDURE INIT
  13. 205      DIM PROG$(64)
  14. 210      CLS:WIDTH 80:COLOR 7,0
  15. 215      KEY 10, "RUN"+CHR$(34)+"MENU"
  16. 220     RETURN ' ------------------------------------------
  17. 225    '
  18. 300     '----------------------- PROCEDURE INVISIBLE
  19. 305      CLS: COLOR 0,0: 'PRINT FILES INVISIBLY
  20. 310      LOCATE ,,0 'turn off cursor
  21. 315     ' CASE  OPT$  OF
  22. 320     IF ( OPT$ ="1" )  THEN ELSE GOTO   335
  23. 325          DRIVE$="A:" : FILES "A:*.BAS"
  24. 330     GOTO   400
  25. 335     IF ( OPT$ ="2" )  THEN ELSE GOTO   350
  26. 340          DRIVE$="B:" : FILES "B:*.BAS"
  27. 345     GOTO   400
  28. 350     IF ( OPT$ ="3" )  THEN ELSE GOTO   365
  29. 355          DRIVE$="C:" : FILES "C:*.BAS"
  30. 360     GOTO   400
  31. 365     IF ( OPT$ ="4" )  THEN ELSE GOTO   380
  32. 370          DRIVE$="D:" : FILES "D:*.BAS"
  33. 375     GOTO   400
  34. 380     IF ( OPT$ ="5" )  THEN ELSE GOTO   395
  35. 385          DRIVE$="E:" : FILES "E:*.BAS"
  36. 390     GOTO   400
  37. 395     ' OTHERWISE 
  38. 400     ' CEND
  39. 405     RETURN ' ------------------------------------------
  40. 410    '
  41. 500     '----------------------- PROCEDURE DRIVE
  42. 505      WHILE INKEY$ <> ""
  43. 510      WEND : ' CLEAR INPUT BUFFER
  44. 515      OPT$="0"
  45. 520      CLS
  46. 525      PRINT " McMenu (RatBAS) Version 2.00 3/26/83"
  47. 530      PRINT " *********DOS 2.0 VERSION************"
  48. 535      PRINT "    MENU OF BASIC PROGRAMS": PRINT
  49. 540      PRINT " PRESS 1,2,3,4 OR 5 TO SELECT DRIVE.." : PRINT
  50. 545      PRINT " 1  DRIVE A"
  51. 550      PRINT " 2  DRIVE B"
  52. 555      PRINT " 3  DRIVE C"
  53. 560      PRINT " 4  DRIVE D"
  54. 565      PRINT " 5  DRIVE E"
  55. 570      PRINT :PRINT " (Non-existant drives are mapped"
  56. 575      PRINT "  to the last-used drive."
  57. 580      WHILE OPT$<"1" OR OPT$>"5"
  58. 585        OPT$=INKEY$:
  59. 590      WEND
  60. 595     GOSUB  300 ' INVISIBLE
  61. 600     RETURN ' ------------------------------------------
  62. 605    '
  63. 700     '----------------------- PROCEDURE READFILES
  64. 705      AROW=0  'position in array prog$
  65. 710      DONE=FALSE: ROW=2
  66. 715      WHILE (DONE=FALSE) AND (ROW<25)
  67. 720        COLUMN=0
  68. 725        WHILE (COLUMN<66) AND (DONE=FALSE)
  69. 730          IF SCREEN(ROW,COLUMN+1)=32  THEN ELSE GOTO  750
  70. 735            DONE=TRUE
  71. 740            MAXP=AROW
  72. 745     GOTO   775
  73. 750     ' ELSE] 
  74. 755            AROW=AROW+1            'Go to next row in array
  75. 760            FOR LETTER=1 TO 8        'Read first 8 characters of file name
  76. 765            PROG$(AROW)=PROG$(AROW)+CHR$(SCREEN(ROW,COLUMN+LETTER))
  77. 770            NEXT LETTER
  78. 775           ' IFEnd] 
  79. 780          COLUMN=COLUMN+18
  80. 785        WEND
  81. 790        ROW=ROW+1
  82. 795      WEND
  83. 800     RETURN ' ------------------------------------------
  84. 805    '
  85. 900     '----------------------- PROCEDURE VISIBLE
  86. 905      WIDTH 40:LOCATE 1,4:COLOR 7,0
  87. 910      PRINT "BASIC programs on this diskette:"
  88. 915      ARRPOS=0: DONE=FALSE: SROW=3: SCOL=1
  89. 920      WHILE DONE=FALSE AND SCOL<28
  90. 925        WHILE SROW<24 AND DONE=FALSE
  91. 930          ARRPOS=ARRPOS+1             'Go to next row in array
  92. 935          IF PROG$(ARRPOS)<>""  THEN ELSE GOTO  960
  93. 940            LOCATE SROW,SCOL
  94. 945            COLOR 0,7:PRINT USING "##";ARRPOS;:
  95. 950            COLOR 7,0:PRINT " ";PROG$(ARRPOS);
  96. 955     GOTO   970
  97. 960     ' ELSE] 
  98. 965            DONE=TRUE
  99. 970           ' IFEnd] 
  100. 975          SROW=SROW+1
  101. 980        WEND
  102. 985        SROW=3
  103. 990        SCOL=SCOL+13
  104. 995      WEND
  105. 1000     RETURN ' ------------------------------------------
  106. 1005    '
  107. 1100     '----------------------- PROCEDURE GET-CHOICE
  108. 1105      KEY OFF: LOCATE 25,1:PRINT "ENTER NUMBER OF PROGRAM DESIRED: ";
  109. 1110      LOCATE ,,1 'turn cursor on
  110. 1115      P=0
  111. 1120      WHILE P<1 OR P>MAXP
  112. 1125        IF PROG$(10)<>""  THEN ELSE GOTO  1230
  113. 1130          LOCATE 25,35:PRINT "     ";:LOCATE 25,35
  114. 1135          P1$=""
  115. 1140          WHILE P1$=""
  116. 1145            P1$=INKEY$
  117. 1150          WEND
  118. 1155          P1=(VAL(P1$)*10)
  119. 1160          PRINT P1$;
  120. 1165          P2$=""
  121. 1170          WHILE P2$=""
  122. 1175            P2$=INKEY$
  123. 1180          WEND
  124. 1185          IF P2$=CR$  THEN ELSE GOTO  1200
  125. 1190            P=VAL(P1$)
  126. 1195     GOTO   1220
  127. 1200     ' ELSE] 
  128. 1205            P2=VAL(P2$)
  129. 1210            PRINT P2$;
  130. 1215            P=P1+P2
  131. 1220           ' IFEnd] 
  132. 1225     GOTO   1245
  133. 1230     ' ELSE] 
  134. 1235          P$=INKEY$
  135. 1240          P=VAL(P$)
  136. 1245         ' IFEnd] 
  137. 1250      WEND
  138. 1255      PROGRAM$=DRIVE$+PROG$(P)
  139. 1260      LOCATE 25,35: PRINT CHR$(1);P;CHR$(1);
  140. 1265      RUN PROGRAM$        'Run the program selected.......
  141. 1270     RETURN ' ------------------------------------------
  142. 1275    '
  143. 1300     '----------------------- PROCEDURE ERROR
  144. 1305      SOUND 200,9:COLOR 7,0: PRINT: PRINT "ERROR";ERR;"AT LINE";ERL
  145. 1310      IF ERR=53  THEN ELSE GOTO  1320
  146. 1315        PRINT "There are no basic files on that drive."
  147. 1320       ' IFEnd] 
  148. 1325      PRINT "PRESS F2 TO RUN THE MENU AGAIN"
  149. 1330      END
  150. 1335     RESUME NEXT ' ---------------------
  151. 1340    '
  152. 25000     ' =================== PROCEDURE LOCATIONS ===========
  153. 25005     '  200 INIT
  154. 25010     '  300 INVISIBLE
  155. 25015     '  500 DRIVE
  156. 25020     '  700 READFILES
  157. 25025     '  900 VISIBLE
  158. 25030     '  1100 GET-CHOICE
  159. 25035     '  1300 ERROR
  160. 25040     ' ================== PROGRAM ======================== 
  161. 25045     FALSE = 0: TRUE = NOT FALSE 
  162. 25050     ON ERROR GOTO  1300
  163. 25055     GOSUB  200 ' INIT
  164. 25060      FOREVER=TRUE
  165. 25065      WHILE FOREVER=TRUE
  166. 25070     GOSUB  500 ' DRIVE
  167. 25075     GOSUB  700 ' READFILES
  168. 25080     GOSUB  900 ' VISIBLE
  169. 25085     GOSUB  1100 ' GET-CHOICE
  170. 25090      WEND
  171. 25095    END
  172.