home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib08.dsk / AUTOMENU.bas < prev    next >
BASIC Source File  |  2023-02-26  |  8KB  |  117 lines

  1. 1  REM  *******************************
  2. 2  REM  *   AUTOMENU DEMONSTRATOR     *
  3. 3  REM  *  BY PROF. W. F. LUEBBERT    *
  4. 4  REM  *     COPYRIGHT (C) 1982      *
  5. 5  REM  *     BY MICRO-SPARC INC      *
  6. 6  REM  *     LINCOLN, MA. 01773      *
  7. 7  REM  *******************************
  8. 100  REM  === INTRODUCTORY COMMENTS ===
  9. 101  REM  TO USE THE AUTOMENU, PUT THE STATEMENTS IN LINES 201 THRU 225 BELOW AT THE LOCATION
  10. 102  REM  IN YOUR PROGRAM WHERE YOU WANT TO USE MENU SELECTION, MAKING THE
  11. 103  REM  APPROPRIATE REPLACEMENTS WHEREEVER THE WORDS 'REPLACE THIS TEXT' APPEAR.
  12. 104  REM 
  13. 105  REM  REPLACE MENU$(1) THRU MENU$(12) BY SHORT DESCRIPTION OF CHOICES FROM WHICH SELECTION IS TO BE MADE
  14. 106  REM  IF YOUR MENU WILL HAVE FEWER THAN 12 OPTIONS, MAKE THE FIRST MENU$(I) AFTER THE LAST OPTION = "***"
  15. 107  REM  ALL HIGHER VALUES OF MENU$(I) AND MDESCRIBE$(I) MAY BE OMITTED
  16. 108  REM 
  17. 109  REM  REPLACEMENT TEXT STRINGS FOR MDESCRIBE$(I) MAY BE OF ANY LENGTH DESIRED UP TO 120 CHARACTERS
  18. 110  REM  OF TENTATIVE SELECTION MADE
  19. 111  REM 
  20. 112  REM  ALSO PUT THE SUBROUTINE WHICH STARTS AT LINE 63000 INTO YOUR PROGRAM,
  21. 113  REM  SUBSTITUTING FOR THE 12 LINE NUMBERS IN THE BODY OF THE 'ON MC GOTO' STATEMENT OF LINE 63040
  22. 114  REM  THE LINE NUMBERS TO WHICH YOU WISH TO BRANCH FOR CHOICES 1,2,3,...,12 RESPECTIVELY.
  23. 115  REM  (NOTE: IF LESS THAN 12 MENU ITEMS USED SHORTEN 'ON GOTO' TO NUMBER OF ITEMS ACTUALLY USED IN MENU)
  24. 116  REM 
  25. 117  REM  IF THE SUBROUTINE IS TO BE USED FOR MULTIPLE MENUS OR MULTIPLE MENU-LEVELS IN THE SAME PROGRAM, MORE THAN ONE LINE MAY BE INSERTED, EACH WITH ITS LEVELCONDITION, E.G. 'IF LEVEL=2 THEN ON MC GOTO ...'
  26. 118  REM 
  27. 119  REM  DO NOT USE THE FOLLOWING VARIABLES (OR OTHER SUBSCRIPTED VARIABLES BEGINNING WITH THE SAME LETTERS
  28. 120  REM  IN YOUR PROGRAM EXCEPT IN CONJUNCTION WITH THIS PROGRAM PACKAGE & SUBROUTINE
  29. 121  REM           MD$(MC),ME$(MC)
  30. 122  REM  IF ANY OF THE FOLLOWING VARIABLES ARE USED IN YOUR PROGRAM THEIR VALUES MAY BE ALTERED BY THIS PROGRAM
  31. 123  REM           I, K, MC, MC$, MK, ML
  32. 124  REM 
  33. 125  REM  AFTER YOUR PROGRAM AND ITS AUTOMENU INSERTS ARE THOROUGHLY CHECKED OUT AND WORKING PROPERLY, THE FOLLOWING STATEMENTS
  34. 126  REM  USED FOR CHECKING ON ERRORS IN USE OF THE AUTOMENU MAY BE REMOVED:
  35. 127  REM        63001, 63005 THRU 63009, 63041 THRU 63050
  36. 128  REM 
  37. 129  REM  THE SPEED WITH WHICH THE MENU IS SCANNED MAY BE CHANGED BY CHANGING THE LOOP PARAMETER IN LINE 63028
  38. 130  REM 
  39. 200  REM  === INSERT INTO BODY OF YOUR PROGRAM ===
  40. 201  DIM MENU$(13),MDESCRIBE$(12)
  41. 202  LET MENU$(1) = "REPLACE THIS TEXT BY 1ST MENU CHOICE"
  42. 203  LET MDESCRIBE$(1) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       FIRST MENU CHOICE"
  43. 204  LET MENU$(2) = "REPLACE THIS TEXT BY 2ND MENU CHOICE"
  44. 205  LET MDESCRIBE$(2) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       SECOND MENU CHOICE"
  45. 206  LET MENU$(3) = "REPLACE THIS TEXT BY 3RD MENU CHOICE"
  46. 207  LET MDESCRIBE$(3) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       THIRD MENU CHOICE"
  47. 208  LET MENU$(4) = "REPLACE THIS TEXT BY 4TH MENU CHOICE"
  48. 209  LET MDESCRIBE$(4) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       4TH MENU CHOICE"
  49. 210  LET MENU$(5) = "REPLACE THIS TEXT BY 5TH MENU CHOICE"
  50. 211  LET MDESCRIBE$(5) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       5TH MENU CHOICE"
  51. 212  LET MENU$(6) = "REPLACE THIS TEXT BY 6TH MENU CHOICE"
  52. 213  LET MDESCRIBE$(6) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       6TH MENU CHOICE"
  53. 214  LET MENU$(7) = "REPLACE THIS TEXT BY 7TH MENU CHOICE"
  54. 215  LET MDESCRIBE$(7) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       7TH MENU CHOICE"
  55. 216  LET MENU$(8) = "REPLACE THIS TEXT BY 8TH MENU CHOICE"
  56. 217  LET MDESCRIBE$(8) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       8TH MENU CHOICE"
  57. 218  LET MENU$(9) = "REPLACE THIS TEXT BY 9TH MENU CHOICE"
  58. 219  LET MDESCRIBE$(9) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       9TH MENU CHOICE"
  59. 220  LET MENU$(10) = "REPLACE THIS TEXT BY 10TH MENU CHOICE"
  60. 221  LET MDESCRIBE$(10) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       10TH MENU CHOICE"
  61. 222  LET MENU$(11) = "REPLACE THIS TEXT BY 11TH MENU CHOICE"
  62. 223  LET MDESCRIBE$(11) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       11TH MENU CHOICE"
  63. 224  LET MENU$(12) = "REPLACE THIS TEXT BY 12TH MENU CHOICE"
  64. 225  LET MDESCRIBE$(12) = "REPLACE THIS TEXT BY ADDITIONAL         DESCRIPTIVE INFORMATION ABOUT THE       12TH MENU CHOICE"
  65. 226  LET MENU$(I) = "***": REM  REPLACE VARIABLE I BY THE NUMBER ONE LARGER THAN THE NUMBER OF MENU ITEMS YOU USE
  66. 227  REM 
  67. 63000  REM === SUBROUTINE TO ADD TO YOUR PROGRAM ===
  68. 63001  ONERR  GOTO 63049
  69. 63002  LET MENU$(13) = "***"
  70. 63003  FOR K = 1 TO 20: IF MENU$(K) = "***"  THEN  GOTO 63010
  71. 63004  NEXT K
  72. 63005  LET MTEST$ = "REPLACE THIS TEXT"
  73. 63006  FOR I = 1 TO K -1
  74. 63007  IF MENU$(I) = ""  OR  LEFT$(MENU$(I),17) = MTEST$  THEN  GOTO 63047
  75. 63008  IF MENU$(I) = ""  OR  LEFT$(MDESCRIBE$(I),17) = MTEST$  THEN  GOTO 63047
  76. 63009  NEXT I
  77. 63010  TEXT : HOME : SPEED= 255: VTAB 9 +K
  78. 63011  PRINT "---------------------------------------"
  79. 63012  PRINT "TO SELECT ITEM: ";: INVERSE : PRINT "PRESS 'RETURN' KEY": NORMAL 
  80. 63013  PRINT "WHEN DESIRED ITEM DISPLAYED IN INVERSE"
  81. 63014  PRINT "---------------------------------------"
  82. 63015  VTAB 1: PRINT  TAB( 10);"-------------------"
  83. 63016  PRINT  TAB( 10);"AUTOMENU OF CHOICES"
  84. 63017  PRINT  TAB( 10);"-------------------"
  85. 63018  PRINT : PRINT 
  86. 63019  INVERSE : PRINT MENU$(1): NORMAL 
  87. 63020  FOR MC = 2 TO K -1: PRINT MENU$(MC): NEXT MC
  88. 63021  FOR MC = 1 TO K -1
  89. 63022  IF MC = 1 GOTO 63025
  90. 63023  VTAB 4 +MC: PRINT MENU$(MC -1)
  91. 63024  INVERSE : PRINT MENU$(MC): NORMAL 
  92. 63025  GOSUB 63028
  93. 63026  NEXT MC
  94. 63027  GOTO 63015
  95. 63028  FOR MLAGTIME = 1 TO 500: NEXT : REM     INCREASE VALUE FROM 500 FOR SLOWER AUTOMENU MOTION;DECREASE IT FOR FASTER MOTION
  96. 63029 MKEY =  PEEK(49152): IF MKEY >128  THEN  POKE 49168,0: POP : GOTO 63031
  97. 63030  RETURN 
  98. 63031  REM 
  99. 63033  VTAB 6 +K: CALL  -958: NORMAL : PRINT "INFORMATION ABOUT TENTATIVE SELECTION:": INVERSE : PRINT : PRINT MDESCRIBE$(MC): NORMAL : PRINT 
  100. 63034  PRINT "---------------------------------------"
  101. 63035  PRINT "TO CONFIRM CHOICE, ";: INVERSE : PRINT "PRESS 'RETURN'";: NORMAL : PRINT " AGAIN"
  102. 63036  PRINT "TO REJECT CHOICE, PRESS ANY OTHER KEY"
  103. 63037  PRINT "---------------------------------------"
  104. 63038  GET MCHOICE$: IF MCHOICE$ < > CHR$(13)  THEN  GOTO 63010
  105. 63039 : TEXT : HOME : POKE 216,0: POP 
  106. 63040  ON MC GOTO 63042,63042,63042,63042,63042,63042,63042,63042,63042,63042,63042,63042: REM  REPLACE LINE #'S BY BRANCH CHOICES. IF MULTI-LEVEL MENUS ALSO USE LEVEL TEST
  107. 63041  GOTO 63049
  108. 63042  PRINT "YOU FAILED TO REPLACE ONE OF THE SAMPLE": PRINT "ENTRIES OF MENU$(I) OR MDESCRIBE$(I)": PRINT "WITH YOUR OWN MENU DESCRIPTIONS"
  109. 63043  PRINT "   OR   "
  110. 63044  PRINT "IF YOUR MENU CONTAINED LESS THAN": PRINT "12 ITEMS, YOU FAILED TO PUT INTO": PRINT "YOUR PROGRAM THE STATEMENT": PRINT "MENU$(I)="; CHR$(162);"***"; CHR$(162)
  111. 63045  PRINT "(WHERE I IS ONE MORE THAN THE": PRINT "NUMBER OF ITEMS IN YOUR MENU)"
  112. 63046  PRINT "   OR   "
  113. 63047  PRINT "YOU FAILED TO CHANGE ONE OR MORE OF THE": PRINT "LINE NUMBERS TO WHICH THE MENU SHOULD": PRINT "CAUSE YOUR PROGRAM TO BRANCH": PRINT "(SEE PROGRAM LINE 63040)"
  114. 63048  STOP 
  115. 63049  TEXT : HOME : PRINT "YOU MADE A MISTAKE IN COPYING": PRINT "THE AUTOMENU PROGRAM INTO YOUR": PRINT "COMPUTER, OR POSSIBLY"
  116. 63050  PRINT "YOU FAILED TO PUT THE FOLLOWING": PRINT "STATEMENT INTO YOUR MAIN PROGRAM": PRINT "DIM MENU$(13),MDESCRIBE$(12)"
  117. 63051  STOP