' *** NUMBMENU.LST *** 2nd GFA-Manual, page 22-3 > PROCEDURE number_menu(VAR command,help!,esc!) ' ' *** Classic number-menu (from DATA-lines; use RESTORE first) ' *** Returns chosen number in command&, unless or was pressed ' *** In that case command&=0 and help!=TRUE or esc!=TRUE ' ' *** Standard: col.max& ' LOCAL title$,n,i,l,s,key$,key CLR command,esc!,help! CLS READ title$ PRINT AT(1,2);SPACE$((col.max-LEN(title$))/2);title$ READ n DIM number.menu$(PRED(n)) FOR i=0 TO PRED(n) READ number.menu$(i) NEXT i FOR i=0 TO PRED(n) l=MAX(l,LEN(number.menu$(i))) NEXT i s=(col.max-l)/2 FOR i=0 TO PRED(n) PRINT AT(s,2*i+5);number.menu$(i) NEXT i PRINT AT(2,25);""; PRINT AT(74,25);""; {ADD(XBIOS(14,1),6)}=0 ! clear keyboard-buffer HIDEM REPEAT key$=INKEY$ IF key$=CHR$(0)+CHR$(98) help!=TRUE command=0 ENDIF IF LEN(key$)=1 IF key$=CHR$(27) esc!=TRUE command=0 ELSE key=ASC(key$) command=key-48 ENDIF ENDIF UNTIL help! OR esc! OR (command>=1 AND command<=n) ERASE number.menu$() ' number.menu.data: ' *** title,number of choices DATA Menu,6 ' *** menu-choices DATA 1 - first choice DATA 2 - second choice DATA 3 - third choice DATA 4 - fourth choice DATA 5 - fifth choice DATA 6 - quit ' RETURN ' ********* '