DIM menuName AS STRING, numItems AS INTEGER, itemName AS STRING, menuSeek AS STRING DIM cursorPos AS INTEGER, r AS STRING, cursorNew AS INTEGER ' seek menu menuSeek = "main" RESTORE dataMenu DO READ menuName, numItems SELECT CASE menuName ' menu doesn't exist CASE "" END ' menu found CASE menuSeek EXIT DO ' menu doesn't match, skip CASE ELSE FOR i% = 1 TO numItems READ itemName NEXT i% END SELECT LOOP ' display CLS : cursorPos = 2: cursorNew = 1 FOR i% = 1 TO numItems READ itemName LOCATE , 3: PRINT itemName 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 END SELECT LOOP END dataMenu: DATA "main", 5 DATA "new game", "save game", "load game", "settings", "exit" DATA "new", 4 DATA "easy", "normal", "hard", "go back" DATA "save", 3 DATA "slot 1", "slot 2", "go back" DATA "load", 3 DATA "slot 1", "slot 2", "go back" DATA "config", 4 DATA "continues", "sound", "music", "go back"