DIM menuName AS STRING, numItems AS INTEGER, itemSkip AS STRING, menuSeek AS STRING DIM cursorPos AS INTEGER, r AS STRING, cursorNew AS INTEGER ' default menu menuSeek = "main" DO ' seek menu RESTORE dataMenu DO READ menuName, numItems SELECT CASE menuName ' menu doesn't exist CASE "" END ' menu found CASE menuSeek REDIM itemName(1 TO numItems) AS STRING REDIM itemFunc(1 TO numItems) AS STRING FOR i% = 1 TO numItems READ itemName(i%), itemFunc(i%) NEXT i% EXIT DO ' menu doesn't match, skip CASE ELSE FOR i% = 1 TO numItems READ itemSkip, itemSkip NEXT i% END SELECT LOOP ' display CLS : cursorPos = 2: cursorNew = 1 FOR i% = 1 TO numItems LOCATE , 3: PRINT itemName(i%) NEXT i% ' move cursor DO IF (cursorPos <> cursorNew) THEN LOCATE cursorPos, 1: PRINT " " LOCATE cursorNew, 1: PRINT CHR$(16) cursorPos = cursorNew END IF DO: r = INKEY$: LOOP UNTIL LEN(r) SELECT CASE RIGHT$(r, 1) CASE "H" ' move up IF (cursorPos > 1) THEN cursorNew = cursorPos - 1 CASE "P" ' move down IF (cursorPos < numItems) THEN cursorNew = cursorPos + 1 CASE " " ' activate IF (LEFT$(itemFunc(cursorPos), 1) = ">") THEN menuSeek = RIGHT$(itemFunc(cursorPos), LEN(itemFunc(cursorPos)) - 1) EXIT DO ELSEIF (itemFunc(cursorPos) = "_QUIT") THEN END ELSEIF (LEFT$(itemFunc(cursorPos), 5) = "_PLAY") THEN ' skill = val(right$(itemFunc(cursorPos), 1)) ' level = 0 ' CALL playLevel(level, skill) EXIT DO ELSEIF (LEFT$(itemFunc(cursorPos), 5) = "_SAVE") THEN ' slot = val(right$(itemFunc(cursorPos), 1)) ' CALL saveGame(slot) ELSEIF (LEFT$(itemFunc(cursorPos), 5) = "_LOAD") THEN ' slot = val(right$(itemFunc(cursorPos), 1)) ' CALL loadGame(slot, level, skill) ' CALL playLevel(level, skill) EXIT DO END IF END SELECT LOOP LOOP END dataMenu: DATA "main", 5 DATA "new game", ">new" DATA "save game", ">save" DATA "load game", ">load" DATA "settings", ">config" DATA "exit", "_QUIT" DATA "new", 4 DATA "easy", "_PLAY0" DATA "normal", "_PLAY1" DATA "hard", "_PLAY2" DATA "go back", ">main" DATA "save", 3 DATA "slot 1", "_SAVE0" DATA "slot 2", "_SAVE1" DATA "go back", ">main" DATA "load", 3 DATA "slot 1", "_LOAD0" DATA "slot 2", "_LOAD1" DATA "go back", ">main" DATA "config", 4 DATA "continues", "" DATA "sound", "" DATA "music", "" DATA "go back", ">main"