101 REM TO USE THE AUTOMENU, PUT THE STATEMENTS IN LINES 201 THRU 225 BELOW AT THE LOCATION
102 REM IN YOUR PROGRAM WHERE YOU WANT TO USE MENU SELECTION, MAKING THE
103 REM APPROPRIATE REPLACEMENTS WHEREEVER THE WORDS 'REPLACE THIS TEXT' APPEAR.
104 REM
105 REM REPLACE MENU$(1) THRU MENU$(12) BY SHORT DESCRIPTION OF CHOICES FROM WHICH SELECTION IS TO BE MADE
106 REM IF YOUR MENU WILL HAVE FEWER THAN 12 OPTIONS, MAKE THE FIRST MENU$(I) AFTER THE LAST OPTION = "***"
107 REM ALL HIGHER VALUES OF MENU$(I) AND MDESCRIBE$(I) MAY BE OMITTED
108 REM
109 REM REPLACEMENT TEXT STRINGS FOR MDESCRIBE$(I) MAY BE OF ANY LENGTH DESIRED UP TO 120 CHARACTERS
110 REM OF TENTATIVE SELECTION MADE
111 REM
112 REM ALSO PUT THE SUBROUTINE WHICH STARTS AT LINE 63000 INTO YOUR PROGRAM,
113 REM SUBSTITUTING FOR THE 12 LINE NUMBERS IN THE BODY OF THE 'ON MC GOTO' STATEMENT OF LINE 63040
114 REM THE LINE NUMBERS TO WHICH YOU WISH TO BRANCH FOR CHOICES 1,2,3,...,12 RESPECTIVELY.
115 REM (NOTE: IF LESS THAN 12 MENU ITEMS USED SHORTEN 'ON GOTO' TO NUMBER OF ITEMS ACTUALLY USED IN MENU)
116 REM
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 ...'
118 REM
119 REM DO NOT USE THE FOLLOWING VARIABLES (OR OTHER SUBSCRIPTED VARIABLES BEGINNING WITH THE SAME LETTERS
120 REM IN YOUR PROGRAM EXCEPT IN CONJUNCTION WITH THIS PROGRAM PACKAGE & SUBROUTINE
121 REM MD$(MC),ME$(MC)
122 REM IF ANY OF THE FOLLOWING VARIABLES ARE USED IN YOUR PROGRAM THEIR VALUES MAY BE ALTERED BY THIS PROGRAM
123 REM I, K, MC, MC$, MK, ML
124 REM
125 REM AFTER YOUR PROGRAM AND ITS AUTOMENU INSERTS ARE THOROUGHLY CHECKED OUT AND WORKING PROPERLY, THE FOLLOWING STATEMENTS
126 REM USED FOR CHECKING ON ERRORS IN USE OF THE AUTOMENU MAY BE REMOVED:
127 REM 63001, 63005 THRU 63009, 63041 THRU 63050
128 REM
129 REM THE SPEED WITH WHICH THE MENU IS SCANNED MAY BE CHANGED BY CHANGING THE LOOP PARAMETER IN LINE 63028
130 REM
200 REM === INSERT INTO BODY OF YOUR PROGRAM ===
201 DIM MENU$(13),MDESCRIBE$(12)
202 LET MENU$(1) = "REPLACE THIS TEXT BY 1ST MENU CHOICE"
203 LET MDESCRIBE$(1) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE FIRST MENU CHOICE"
204 LET MENU$(2) = "REPLACE THIS TEXT BY 2ND MENU CHOICE"
205 LET MDESCRIBE$(2) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE SECOND MENU CHOICE"
206 LET MENU$(3) = "REPLACE THIS TEXT BY 3RD MENU CHOICE"
207 LET MDESCRIBE$(3) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE THIRD MENU CHOICE"
208 LET MENU$(4) = "REPLACE THIS TEXT BY 4TH MENU CHOICE"
209 LET MDESCRIBE$(4) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE 4TH MENU CHOICE"
210 LET MENU$(5) = "REPLACE THIS TEXT BY 5TH MENU CHOICE"
211 LET MDESCRIBE$(5) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE 5TH MENU CHOICE"
212 LET MENU$(6) = "REPLACE THIS TEXT BY 6TH MENU CHOICE"
213 LET MDESCRIBE$(6) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE 6TH MENU CHOICE"
214 LET MENU$(7) = "REPLACE THIS TEXT BY 7TH MENU CHOICE"
215 LET MDESCRIBE$(7) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE 7TH MENU CHOICE"
216 LET MENU$(8) = "REPLACE THIS TEXT BY 8TH MENU CHOICE"
217 LET MDESCRIBE$(8) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE 8TH MENU CHOICE"
218 LET MENU$(9) = "REPLACE THIS TEXT BY 9TH MENU CHOICE"
219 LET MDESCRIBE$(9) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE 9TH MENU CHOICE"
220 LET MENU$(10) = "REPLACE THIS TEXT BY 10TH MENU CHOICE"
221 LET MDESCRIBE$(10) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE 10TH MENU CHOICE"
222 LET MENU$(11) = "REPLACE THIS TEXT BY 11TH MENU CHOICE"
223 LET MDESCRIBE$(11) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE 11TH MENU CHOICE"
224 LET MENU$(12) = "REPLACE THIS TEXT BY 12TH MENU CHOICE"
225 LET MDESCRIBE$(12) = "REPLACE THIS TEXT BY ADDITIONAL DESCRIPTIVE INFORMATION ABOUT THE 12TH MENU CHOICE"
226 LET MENU$(I) = "***": REM REPLACE VARIABLE I BY THE NUMBER ONE LARGER THAN THE NUMBER OF MENU ITEMS YOU USE
227 REM
63000 REM === SUBROUTINE TO ADD TO YOUR PROGRAM ===
63001 ONERR GOTO 63049
63002 LET MENU$(13) = "***"
63003 FOR K = 1 TO 20: IF MENU$(K) = "***" THEN GOTO 63010
63004 NEXT K
63005 LET MTEST$ = "REPLACE THIS TEXT"
63006 FOR I = 1 TO K -1
63007 IF MENU$(I) = "" OR LEFT$(MENU$(I),17) = MTEST$ THEN GOTO 63047
63008 IF MENU$(I) = "" OR LEFT$(MDESCRIBE$(I),17) = MTEST$ THEN GOTO 63047
63038 GET MCHOICE$: IF MCHOICE$ < > CHR$(13) THEN GOTO 63010
63039 : TEXT : HOME : POKE 216,0: POP
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
63041 GOTO 63049
63042 PRINT "YOU FAILED TO REPLACE ONE OF THE SAMPLE": PRINT "ENTRIES OF MENU$(I) OR MDESCRIBE$(I)": PRINT "WITH YOUR OWN MENU DESCRIPTIONS"
63043 PRINT " OR "
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)
63045 PRINT "(WHERE I IS ONE MORE THAN THE": PRINT "NUMBER OF ITEMS IN YOUR MENU)"
63046 PRINT " OR "
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)"
63048 STOP
63049 TEXT : HOME : PRINT "YOU MADE A MISTAKE IN COPYING": PRINT "THE AUTOMENU PROGRAM INTO YOUR": PRINT "COMPUTER, OR POSSIBLY"
63050 PRINT "YOU FAILED TO PUT THE FOLLOWING": PRINT "STATEMENT INTO YOUR MAIN PROGRAM": PRINT "DIM MENU$(13),MDESCRIBE$(12)"