home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 September
/
Simtel20_Sept92.cdr
/
msdos
/
basic
/
basmenu.arc
/
MENUSAMP.BAS
next >
Wrap
BASIC Source File
|
1988-07-24
|
3KB
|
91 lines
1 ' *******************************************
2 ' * *
3 ' * SAMPLE MENU SUBROUTINE (MENUSAMP.BAS) *
4 ' * *
5 ' * Written by Kraig J. Tolliver *
6 ' * *
7 ' * On 07-24-1988 *
8 ' * *
9 ' *******************************************
10 SCREEN 0,0,0:KEY OFF:WIDTH 80:COLOR ,,0
20 DIM TRIM$(19):' *** Modify to use a next page option to another Menu ***
30 AUTH$="Program written by Kraig J. Tolliver"
40 SB=9:TC=6:SC=2:HSC=5:'*** COLOR ***
50 'SB=7:TC=15:SC=5:HSC=15:'*** B/W ***
60 GOSUB 9000
70 ON PICK GOSUB 1000,2000,3000,4000,5000
80 GOTO 60
90 END
9000 TRIMSIZE=0
9010 TITLE$="Sample MENU"
9020 MENOPT$(1)="First Selection" :BD(1)=2
9030 MENOPT$(2)="Second Selection" :BD(2)=5
9040 MENOPT$(3)="Third Selection" :BD(3)=4
9050 MENOPT$(4)="Fourth Selection" :BD(4)=3
9060 MENOPT$(5)="Quit"
9070 LAST=5:AUTH=0:' *** Set AUTH=1 to by-pass author presentation ***
9080 FOR N=1 TO LAST
9090 IF LEN(MENOPT$(N))>TRIMSIZE THEN TRIMSIZE=LEN(MENOPT$(N))
9100 NEXT N
9110 TRIMSIZE=TRIMSIZE+6
9120 TRIM$(1)=CHR$(201)+STRING$(TRIMSIZE,205)+CHR$(187)
9130 FOR N=2 TO (LAST*2)+2
9140 TRIM$(N)=CHR$(186)+SPACE$(TRIMSIZE)+CHR$(186)
9150 NEXT N
9160 TRIM$((LAST*2)+3)=CHR$(200)+STRING$(TRIMSIZE,205)+CHR$(188)
9170 PICK=1:PICK$="":CLS
9180 COLOR TC,0:LOCATE 3,INT((80-LEN(TITLE$))/2),0:PRINT TITLE$;:COLOR SB,0
9190 FOR N=1 TO (LAST*2)+3
9200 LOCATE N+5,INT((78-TRIMSIZE)/2):PRINT TRIM$(N)
9210 NEXT N
9220 FOR CHOICE=1 TO LAST
9230 ROW%(CHOICE)=2*CHOICE+6
9240 COL%(CHOICE)=INT((86-TRIMSIZE)/2)
9250 NEXT CHOICE
9260 FOR CHOICE=1 TO LAST
9270 LOCATE ROW%(CHOICE),COL%(CHOICE):COLOR SC,0
9280 IF PICK=CHOICE THEN COLOR 0,HSC
9290 PRINT MENOPT$(CHOICE):COLOR SC,0
9300 NEXT CHOICE
9310 IF AUTH<>0 GOTO 9550
9320 COLOR 14,0
9330 MAUTH=INT((80-LEN(AUTH$))/2)
9340 FOR N=79 TO MAUTH STEP -1
9350 LOCATE 25,N:PRINT LEFT$(AUTH$,80-N);
9360 NEXT N
9370 FOR N=79 TO MAUTH+LEN(AUTH$) STEP -1
9380 LOCATE 25,N:PRINT " ";
9390 NEXT N
9400 COLOR 28,0:LOCATE 25,MAUTH:PRINT AUTH$;:AUTH=1
9410 FOR N=1 TO 600:SOUND N*10,1/(N*2):NEXT N
9420 COLOR 13,0
9430 FOR N=MAUTH TO 1 STEP-1
9440 LOCATE 25,N
9450 PRINT AUTH$;" "
9460 NEXT N
9470 FOR N=LEN(AUTH$)-1 TO 1 STEP -1
9480 LOCATE 25,1
9490 PRINT RIGHT$(AUTH$,N);
9500 NEXT N
9510 FOR N=LEN(AUTH$) TO 1 STEP -1
9520 LOCATE 25,N
9530 PRINT " ";
9540 NEXT N
9550 COLOR ,,1
9560 IF PICK$=CHR$(27) THEN PICK=5:RETURN
9570 PICK$=INKEY$:IF PICK$="" GOTO 9570
9580 ASCII=ASC(PICK$)
9590 IF ASCII=13 THEN LOCATE ,,1:COLOR TC,0,BD(PICK):RETURN
9600 IF ASCII=32 THEN PICK=PICK+1:IF PICK>LAST THEN PICK=1:GOTO 9260
9610 IF ASCII>97 AND ASCII<=122 THEN PICK$=CHR$(ASC(PICK$)-32)
9620 IF LEN(PICK$)=1 GOTO 9680
9630 PICK$=RIGHT$(PICK$,1)
9640 ASCII=ASC(PICK$)
9650 IF ASCII=72 THEN PICK=PICK-1:IF PICK=0 THEN PICK=LAST
9660 IF ASCII=80 THEN PICK=PICK+1:IF PICK>LAST THEN PICK=1
9670 GOTO 9260
9680 FOR CHOICE=1 TO LAST
9690 IF PICK$=LEFT$(MENOPT$(CHOICE),1) THEN PICK=CHOICE
9700 NEXT CHOICE
9710 GOTO 9260